У меня есть следующий код:
<!DOCTYPE html>
<html>
<body>
<p id = "demo"></p>
<script>
const input = 'hello world';
document.getElementById("demo").innerHTML = sortAlphabets(input);
function sortAlphabets(input) {
return input.split('').sort().join('');
};
</script>
</body>
</html>
Результат: dehllloorw
Но я хочу изменить его, чтобы сортировать по положению внешнего вида персонажа. Результат должен быть: hellloowrd
Как мне это сделать?
Действительно ценится.
Спасибо.
Вы можете использовать функцию сравнения с .sort
, а внутри этой функции вы можете использовать input.indexOf
, чтобы получить индекс первого появления символа во входной строке.
input.split('').sort((a,b) => input.indexOf(a)-input.indexOf(b)).join('')
Если вы хотите, чтобы пробелы были удалены, просто используйте фильтр после разделения.
input.split('').filter(c=>c!==' ').sort((a,b) => input.indexOf(a)-input.indexOf(b)).join('')
Вам нужна пользовательская функция сортировки, здесь будет сравниваться по индексу
const input = 'hello world';
let splited = input.split('').map(e => e.trim());
let sorted = splited.sort((a, b) => {
return splited.indexOf(a) - splited.indexOf(b);
}).join('');
console.info(sorted);
Добавьте разделение и присоединитесь, наконец, чтобы пространство было удалено