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

如何使用map等数组方法按另一数组同id元素设置对象属性?

解决方案

性能最优实现(推荐)

相比原有双层O(n*m)的时间复杂度,该方案通过Set将查找复杂度降到O(1),整体复杂度优化为O(n+m),尤其适合大数组场景:

// 提取个人曲库所有歌曲id存入Set
const purchasedIds = new Set(smallArray.map(item => item.id));
// 遍历歌曲库设置购买状态
bigArray.forEach(item => item.purchased = purchasedIds.has(item.id));

单行实现

如果仅追求单行写法可以合并逻辑,注意该写法性能略低,因为每遍历一次大数组元素都会重复生成Set:

bigArray.forEach(item => item.purchased = new Set(smallArray.map(i => i.id)).has(item.id));

不修改原数组的实现

如果需要保留原bigArray不变,返回全新的数组副本,可以使用map方法:

const purchasedIds = new Set(smallArray.map(item => item.id));
const newBigArray = bigArray.map(item => ({
  ...item,
  purchased: purchasedIds.has(item.id)
}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:57:02