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

JS数组操作:如何对比两组数组并生成第三组?求技术建议

嘿,这问题很清晰!你应该是想把selectItems里的商品ID,对应上它们在activeItems里的价格,生成一组关联好的目标数据对吧?我给你几个实用的JavaScript实现方案,你可以根据自己的需求挑选:

方案一:先建立ID-价格映射表(高效复用)

这种方法适合后续需要多次查询价格的场景,先把所有ID和对应的价格存成一个映射对象,之后查找会非常快:

// 第一步:构建itemId到price的映射对象
const itemPriceMap = {};
activeItems.itemId.forEach((itemId, index) => {
  // 如果需要把价格转成数字类型,这里可以加 Number() 或 parseFloat()
  itemPriceMap[itemId] = activeItems.price[index];
});

// 生成「键为ID,值为价格」的对象格式目标数据
const selectedItemPrices = {};
selectItems.forEach(id => {
  // 可选:判断ID是否存在,避免无对应价格的情况
  if (itemPriceMap.hasOwnProperty(id)) {
    selectedItemPrices[id] = itemPriceMap[id];
  }
});

// 或者生成「数组对象」格式的目标数据(更易遍历展示)
const selectedItemsData = selectItems.map(id => ({
  itemId: id,
  price: itemPriceMap[id] || '无对应价格' // 无匹配时显示默认值
}));
方案二:直接遍历查找(简洁直观)

如果你的数据量不大,直接通过索引查找会更简洁,不需要额外构建映射表:

// 生成数组对象格式的目标数据
const selectedItemsData = selectItems.map(selectedId => {
  // 找到当前ID在itemId数组中的索引
  const matchIndex = activeItems.itemId.indexOf(selectedId);
  return {
    itemId: selectedId,
    // 找到索引就取对应价格,没找到就给默认值
    price: matchIndex !== -1 ? activeItems.price[matchIndex] : '无对应价格'
  };
});

// 生成键值对对象格式的目标数据
const selectedItemPrices = {};
selectItems.forEach(selectedId => {
  const matchIndex = activeItems.itemId.indexOf(selectedId);
  if (matchIndex !== -1) {
    selectedItemPrices[selectedId] = activeItems.price[matchIndex];
  }
});

额外提醒

  • 如果需要对价格进行计算,记得把字符串类型的价格转成数字,比如用Number(activeItems.price[index])或者parseFloat(activeItems.price[index])
  • 如果担心有重复的ID,或者需要处理异常情况,可以在构建映射表的时候加判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:39