You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现JavaScript按字符出现位置排序?

按字符首次出现位置排序的实现方案

我懂你要的效果——不是按字母顺序排序,而是把相同字符都聚集到它第一次出现的位置后面,保持首次出现的顺序不变,同时把重复的字符都跟在后面。原代码里的sort()默认是按Unicode字符编码排序,所以才得到了字母序的结果,我们可以通过记录字符首次出现的位置来修改排序逻辑。

修改后的完整代码

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
 const input = 'hello world';
 document.getElementById("demo").innerHTML = sortAlphabets(input);
 function sortAlphabets(input) {
  const charArr = input.split('');
  // 记录每个字符第一次出现的索引
  const firstOccurrence = new Map();
  charArr.forEach((char, index) => {
    if (!firstOccurrence.has(char)) {
      firstOccurrence.set(char, index);
    }
  });
  // 按照字符首次出现的索引排序
  return charArr.sort((a, b) => {
    return firstOccurrence.get(a) - firstOccurrence.get(b);
  }).join('');
 };
</script>
</body>
</html>

代码解释

  1. 记录首次出现位置:用Map遍历字符数组,只记录每个字符第一次出现的索引,这样重复字符都会共享同一个首次索引。
  2. 自定义排序逻辑:在sort()的回调函数里,比较两个字符的首次出现索引,索引更小的(出现更早的)排在前面。
  3. 拼接结果:排序完成后把数组重新拼成字符串。

运行这段代码后,输入hello world会得到你预期的结果:hellloowrd。

内容的提问来源于stack exchange,提问作者Haminteu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:27:45