如何在JavaScript中根据另一个数组对数组进行排序?
按数字数组排序规则排序字符数组的JavaScript实现
没问题,我来帮你把这个C++逻辑转成易懂的JavaScript代码!核心思路就是把数字和对应的字符先配对,按数字排序后再拆分回两个数组,完全匹配你要的效果。
实现代码
function sortArraysByNumbers(numArray, charArray) { // 第一步:将数字和对应字符配对成对象数组 const paired = numArray.map((num, index) => ({ number: num, character: charArray[index] })); // 第二步:按照数字从小到大排序配对后的数组 paired.sort((a, b) => a.number - b.number); // 第三步:分别提取排序后的数字和字符数组 const sortedNumbers = paired.map(item => item.number); const sortedChars = paired.map(item => item.character); return { sortedNumbers, sortedChars }; } // 测试你的示例输入 const inputNumbers = [2, 1, 5, 4, 9, 3, 6, 7, 10, 8]; const inputChars = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; const result = sortArraysByNumbers(inputNumbers, inputChars); console.log("排序后的数字数组:", result.sortedNumbers); console.log("对应字符数组:", result.sortedChars);
代码说明
- 配对数组:用
map方法把两个数组的对应位置元素绑定在一起,这样排序时字符能跟着数字走,不会错位。 - 排序逻辑:
sort((a, b) => a.number - b.number)确保是按数字的数值大小排序(如果直接用默认sort()会按字符串排序,比如10会排在2前面)。 - 拆分数组:排序完成后,再用
map分别提取数字和字符,得到最终的两个排序后数组。
运行结果
执行上面的代码后,控制台会输出:
排序后的数字数组: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 对应字符数组: ['B', 'A', 'F', 'D', 'C', 'G', 'H', 'J', 'E', 'I']
完全符合你给出的示例输出!
内容的提问来源于stack exchange,提问作者Mihailo Maksimović
相关产品推荐
相关产品推荐

