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

如何在JavaScript中关联排序二维数组的两个子数组?

实现关联数组的排序(0值后置)

要实现名字数组和次数数组的关联排序,核心是先把两组数据绑定成一个整体,排序后再拆分回原结构,避免单独排序导致的关联关系丢失。具体步骤如下:

  1. 定义原始数组
const names = ['Daniela', 'Jonas', 'Simon', 'Vincent'];
const guessCounts = ['0', '3', '0', '4'];
  1. 合并为关联对象数组
    将名字和对应的次数绑定为对象,同时把次数字符串转为数字,方便后续排序比较:
const combined = names.map((name, index) => ({
  name,
  count: Number(guessCounts[index])
}));
  1. 按规则排序
    排序逻辑:非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;
});
  1. 拆分回目标数组
    从排序后的对象数组中分别提取名字和次数(转回字符串):
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:40:15