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

JavaScript遍历不同长度数组按条件填充第三个数组实现字符串排序

问题描述
  • 此前通过嵌套循环实现过同类功能,但本次处理两个独立数组的索引匹配逻辑时频繁出错,该问题是阻碍功能完成的核心难点。
  • 待实现需求:对同时包含字母和数字的字符串做排序,要求字母按逆字母表顺序排序,数字保留在原始索引位置不变。
  • 现有实现无法正确组装sortString数组,不能将字母和数字重新拼接为目标字符串,需要修正代码达成效果,例如调用reverse("ab89c")时应返回"cb89a"。

原有问题代码如下:

function reverse(str) {
    // split the str into an array
  const arr = [...str]
  // converts each element in arr to a number, letters are string 'NaN'
  const numArray = arr.map(x=> Number(x)).map(x=> x >= 0 ? x : String(x))
  // array of the sorted letters
  const letters = arr.filter(x=> !/[0-9]/g.test(x)).reverse()
    // initiate empty array to hold the combined numbers and letters
  let sortString = []
  // Use for loop to cycle through and replace elements that are 'NaN' with letters from the letter array.  All pushed to sortString.
  for (let i=0; i<arr.length; i++) {
    sortString.push(numArray[i] === 'NaN' ? letters[0] : numArray[i])
  }
 return sortString
}


reverse("ab89c") // output should be "cb89a"
代码问题点
  • 字母排序逻辑错误:直接对原顺序提取的字母数组调用reverse(),仅反转字母在原字符串中的出现顺序,并非按逆字母表规则排序,测试用例巧合通过但无法覆盖其他输入场景。
  • 字母取值逻辑错误:遍历过程中遇到字母位置时固定取letters[0],没有移动取值索引,会导致所有字母位置被填入同一个字符。
  • 返回值不符合要求:函数最终返回数组,没有拼接为字符串结果。
  • 数字判断逻辑冗余:通过Number()转值后对比字符串'NaN'的写法绕路,还存在边界判断异常风险。
修正后实现

实现思路:

  1. 提取字符串中所有字母,单独做逆字母表排序
  2. 遍历原字符串,数字直接保留在原位置,字母按顺序从排好序的字母列表中依次取值填充
  3. 将组装完成的字符数组拼接为字符串返回
function reverse(str) {
  const charArr = [...str]
  // 提取所有字母,按逆字母表排序
  const sortedLetters = charArr
    .filter(char => !/[0-9]/.test(char))
    .sort()
    .reverse()
  
  const result = []
  // 标记当前待取的排序后字母的索引
  let letterPointer = 0
  for (const char of charArr) {
    if (/[0-9]/.test(char)) {
      // 数字直接保留
      result.push(char)
    } else {
      // 字母按顺序取排好序的值,指针后移
      result.push(sortedLetters[letterPointer])
      letterPointer++
    }
  }
  // 拼接为字符串返回
  return result.join('')
}

// 测试
console.log(reverse("ab89c")) // 输出: cb89a

该实现逻辑清晰,时间复杂度由排序步骤决定,为O(n log n),可满足常规使用场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:45:38