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

如何按键值对对对象数组进行重复数据删除?

如何按键值对对对象数组进行重复数据删除?

跃然一笑 2022-09-02 10:30:01
// This is a large array of objects, e.g.:let totalArray = [    {"id":"rec01dTDP9T4ZtHL4","fields":    {"user_id":170180717,"user_name":"abcdefg","event_id":516575,    }]let uniqueArray = [];let dupeArray = [];let itemIndex = 0totalArray.forEach(x => {  if(!uniqueArray.some(y => JSON.stringify(y) === JSON.stringify(x))){    uniqueArray.push(x)  } else(dupeArray.push(x))})node.warn(totalArray);node.warn(uniqueArray);node.warn(dupeArray);return msg;我需要我的代码通过数组中对象中的键值user_id来标识数组中的重复项。现在,我的代码用于标识数组中的相同对象,但我需要它来根据对象内的键值来标识重复项。我该怎么做?我正在努力弄清楚如何通过 for 每个循环来识别基于键值而不是整个对象的重复。
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

现在,我的代码用于标识数组中的相同对象,但我需要它来根据对象内的键值来标识重复项。我该怎么做?


不要比较整个对象的 JSON 表示形式,而只比较它们的属性。user_id


totalArray.forEach(x => {

  if(!uniqueArray.some(y => y.fields.user_id === x.fields.user_id)){

    uniqueArray.push(x)

  } else(dupeArray.push(x))

})


查看完整回答
反对 回复 2022-09-02
?
当年话下

TA贡献1890条经验 获得超9个赞

一种方法是保留到目前为止找到的ID列表,并采取相应的行动:


totalArray = [

  { id: 1, val: 10 },

  { id: 2, val: 20 },

  { id: 3, val: 30 },

  { id: 2, val: 15 },

  { id: 1, val: 50 }

]

const uniqueArray = []

const dupeArray = []

const ids = {}

totalArray.forEach( x => {

  if (ids[x.id]) {

    dupeArray.push(x)

  } else { 

    uniqueArray.push(x)

    ids[x.id] = true

  }

})

for (const obj of uniqueArray) console.log("unique:",JSON.stringify(obj))

for (const obj of dupeArray)   console.log("dupes: ",JSON.stringify(obj))


查看完整回答
反对 回复 2022-09-02
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

您可以采取 a 并推送到唯一项或重复项。Set


var array = [

        { id: 1, data: 0 },

        { id: 2, data: 1 },

        { id: 2, data: 2 },

        { id: 3, data: 3 },

        { id: 3, data: 4 },

        { id: 3, data: 5 },

    ],

    uniques = [],

    duplicates = [];


array.forEach(

    (s => o => s.has(o.id) ? duplicates.push(o) : (s.add(o.id), uniques.push(o)))

    (new Set)

);


console.log(uniques);

console.log(duplicates);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反对 回复 2022-09-02
  • 3 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号