JS数组对象问题

有如下两个数组对象,需要根据数组对象中的source字段作为唯一标识,找出两个数组中source相同的对象然后对size进行比较,希望各位大佬能给点思路

阅读 1.9k
3 个回答
新手上路,请多包涵
let getObj = (arr) => {
  let obj = {};
  arr.forEach((item) => {
    obj[item.source] = item;
  });

  return obj;
};

let obj1 = getObj(arr1);
let obj2 = getObj(arr2);

for (let key in obj1) {
  if (obj2[key]) {
    //这里说明source相同,可以写对比size的逻辑
  }
}

最简单常用的方法:先遍历其中一个处理成map的形式,再遍历第二个,读取map就很好判断了

得到source 和 size相同的列表

var arr1=[{size:100,source:'png'}];
var arr1Map = arr1.reduce((acc,cur)=>(acc[cur.source]=cur,acc),{});// {'png':{size:100,source:'png'}}
var arr2=[{size:100,source:'png'},{size:100,source:'jpg'}]
arr2.filter(item=>arr1Map[item.source]?.size == item.size);//[{size: 100, source: "png"}]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题