为了账号安全,请及时绑定邮箱和手机立即绑定

根据特定值识别数组中的唯一对象

根据特定值识别数组中的唯一对象

墨色风雨 2022-05-14 14:44:37
我有以下对象数组,我需要根据 key 从这个数组中识别唯一对象img1。我能够识别与 key 关联的唯一值,img1但不能识别 key 的关联值img2。我目前拥有的代码,const imgs_arr = [    ...new Set(      input_arr.map(item => {img_1: item.img1[0]})    )  ];  return imgs_arr;输入数组:[{img1: ['/path/to/img1'], img2: ['/path/to/img2']},{img1: ['/path/to/img1'], img2: ['/path/to/img3']},{img1: ['/path/to/img1'], img2: ['/path/to/img4']},{img1: ['/path/to/img12'], img2: ['/path/to/img5']},{img1: ['/path/to/img12'], img2: ['/path/to/img46']},{img1: ['/path/to/img12'], img2: ['/path/to/img45']},{img1: ['/path/to/img12'], img2: ['/path/to/img478']}]预期输出数组:[{img1: '/path/to/img1', img2: '/path/to/img2'},{img1: '/path/to/img12', img2: '/path/to/img5'}]根据评论中的问题为问题添加更多颜色。 img1key 具有我需要从中找到唯一值的值,然后img2从第一个匹配项中找到 key 的相应值。非常感谢您的帮助!
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

使用forEach循环并使用 unqiue 键构建任何对象。Object.values从构建的对象中获取。


const data = [

  { img1: ["/path/to/img1"], img2: ["/path/to/img2"] },

  { img1: ["/path/to/img1"], img2: ["/path/to/img3"] },

  { img1: ["/path/to/img1"], img2: ["/path/to/img4"] },

  { img1: ["/path/to/img12"], img2: ["/path/to/img5"] },

  { img1: ["/path/to/img12"], img2: ["/path/to/img46"] },

  { img1: ["/path/to/img12"], img2: ["/path/to/img45"] },

  { img1: ["/path/to/img12"], img2: ["/path/to/img478"] }

];


const update = data => {

  const res = {};


  data.forEach(item => {

    const u_key = item.img1[0];

    if (!(u_key in res)) {

        res[u_key] = item;

    }

  });

  return Object.values(res);

};


console.log(update(data));


查看完整回答
反对 回复 2022-05-14
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

function filterArrayByImg1(arr) {


  let x = [];


  return arr.filter((e, a) => {


      if (!e.img1 || !e.img1[0] || x.includes(e.img1[0]))

        return false;

      else {

        x.push(e.img1[0]);

        return true;

      }

    })

    .map(e => ({

      img1: e.img1[0],

      img2: e.img2[0]

    }));

}



let inputArray = [{

    img1: ['/path/to/img1'],

    img2: ['/path/to/img2']

  },

  {

    img1: ['/path/to/img1'],

    img2: ['/path/to/img3']

  },

  {

    img1: ['/path/to/img1'],

    img2: ['/path/to/img4']

  },

  {

    img1: ['/path/to/img12'],

    img2: ['/path/to/img5']

  },

  {

    img1: ['/path/to/img12'],

    img2: ['/path/to/img46']

  },

  {

    img1: ['/path/to/img12'],

    img2: ['/path/to/img45']

  },

  {

    img1: ['/path/to/img12'],

    img2: ['/path/to/img478']

  }

];




//filter the array

let filteredArr = filterArrayByImg1(inputArray);


console.log(filteredArr);


查看完整回答
反对 回复 2022-05-14
  • 2 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信