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

JS自定义数组排序:实现子数组关联排序需求

解决方案

要实现让test[1]跟随test[0]排序后的原索引取值,核心是保留两个数组元素的原始对应关系——不能直接单独排序第一个数组(会丢失原始索引的关联)。具体实现步骤如下:

  1. 先将两个数组的对应索引元素配对,形成新的二维数组,每个子数组包含原数组对应位置的两个元素:

    // 配对原数组的对应元素
    const paired = test_array[0].map((num, index) => [num, test_array[1][index]]);
    

    这一步会得到:[[98,10], [6,20], [54,30], [32,40]]

  2. 按照配对数组中每个子数组的第一个元素(即原test_array[0]的元素)从小到大排序:

    paired.sort((a, b) => a[0] - b[0]);
    

    排序后配对数组变为:[[6,20], [32,40], [54,30], [98,10]]

  3. 分别提取排序后配对数组的第一列和第二列到test数组中:

    test[0] = paired.map(item => item[0]);
    test[1] = paired.map(item => item[1]);
    

完整代码

let test_array = [[98,6,54,32],[10,20,30,40]];
var test = [[],[]];

// 配对元素并排序
const paired = test_array[0].map((num, idx) => [num, test_array[1][idx]]);
paired.sort((a, b) => a[0] - b[0]);

// 拆分到test数组
test[0] = paired.map(i => i[0]);
test[1] = paired.map(i => i[1]);

console.log(test[0]); // [6,32,54,98]
console.log(test[1]); // [20,40,30,10]

关键说明

直接对test_array[0].sort(...)会修改原数组的顺序,同时丢失原始索引与test_array[1]元素的对应关系,导致无法正确关联第二个数组的元素。通过先配对再排序的方式,能始终保持两个数组元素的原始对应关系,排序后拆分即可得到需求结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:12:13