如何在JavaScript中关联排序二维数组的两个子数组?
实现关联数组的排序(0值后置)
要实现名字数组和次数数组的关联排序,核心是先把两组数据绑定成一个整体,排序后再拆分回原结构,避免单独排序导致的关联关系丢失。具体步骤如下:
- 定义原始数组
const names = ['Daniela', 'Jonas', 'Simon', 'Vincent']; const guessCounts = ['0', '3', '0', '4'];
- 合并为关联对象数组
将名字和对应的次数绑定为对象,同时把次数字符串转为数字,方便后续排序比较:
const combined = names.map((name, index) => ({ name, count: Number(guessCounts[index]) }));
- 按规则排序
排序逻辑:非0值按次数从小到大排列,0值统一排到最后:
combined.sort((a, b) => { // 0值后置:如果a是0、b非0,a排后面;反之b排后面 if (a.count === 0 && b.count !== 0) return 1; if (a.count !== 0 && b.count === 0) return -1; // 非0值按次数升序排列 return a.count - b.count; });
- 拆分回目标数组
从排序后的对象数组中分别提取名字和次数(转回字符串):
const sortedNames = combined.map(item => item.name); const sortedCounts = combined.map(item => item.count.toString()); // 输出结果 console.log(sortedNames); // ['Jonas', 'Vincent', 'Simon', 'Daniela'] console.log(sortedCounts); // ['3', '4', '0', '0']
这样就能完美实现你需要的关联排序效果,确保名字和对应的次数始终保持对应关系。
内容的提问来源于stack exchange,提问作者JonasMGGD
相关产品推荐
相关产品推荐

