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

使用纯JavaScript根据一个数组排序结果同步调整另一个数组元素位置

关联数组同步排序解决方案

这其实是个很常见的跨数组关联排序问题,核心就是要把两个数组中同索引位置的元素绑定在一起,这样排序其中一个数组的元素时,另一个数组的对应元素能跟着同步调整。我给你用两种常用语言演示实现思路,其他语言的逻辑也是完全一致的:

JavaScript 实现

// 原始数组
const arr1 = [64, 23, 35, 11, 55];
const arr2 = [34, 10, 54, 12, 4];

// 1. 将两个数组的同索引元素配对,保留关联关系
const pairedItems = arr1.map((val, index) => ({
  arr1Val: val,
  arr2Val: arr2[index]
}));

// 2. 按照arr1的元素值对配对后的数组排序
pairedItems.sort((a, b) => a.arr1Val - b.arr1Val);

// 3. 分别提取排序后的arr1和同步调整后的arr2
const sortedArr1 = pairedItems.map(item => item.arr1Val);
const sortedArr2 = pairedItems.map(item => item.arr2Val);

console.log('排序后的arr1:', sortedArr1); // 输出: [11, 23, 35, 55, 64]
console.log('同步调整后的arr2:', sortedArr2); // 输出: [12, 10, 54, 4, 34]

Python 实现

arr1 = [64, 23, 35, 11, 55]
arr2 = [34, 10, 54, 12, 4]

# 1. 打包两个数组的同索引元素为元组
paired = list(zip(arr1, arr2))
# 2. 按元组的第一个元素(即arr1的元素)排序
paired.sort()
# 3. 拆分排序后的元组,得到两个独立数组
sorted_arr1, sorted_arr2 = zip(*paired)

print("排序后的arr1:", sorted_arr1)  # 输出: (11, 23, 35, 55, 64)
print("同步调整后的arr2:", sorted_arr2)  # 输出: (12, 10, 54, 4, 34)

核心逻辑说明

直接单独排序arr1会丢失它和arr2的索引关联,所以我们先把同位置的元素绑定成一个整体(对象或元组),这样排序这个整体时,两个元素的对应关系就不会被破坏。排序完成后再拆分回两个数组,就能得到你想要的同步调整效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:59:16