JS数组对象问题

发布于 2022-09-13 00:44:48 字数 127 浏览 15 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

被你宠の有点坏 2022-09-20 00:44:48
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的逻辑
  }
}
等待我真够勒 2022-09-20 00:44:48

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

寻梦旅人 2022-09-20 00:44:48

得到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"}]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文