Javascript 按角色出现位置排序
Javascript Sort by character appearance position
我有以下代码:
<!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.log(sorted);
我有以下代码:
<!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.log(sorted);