首页 > 解决方案 > 在javascript / es6中比较嵌套对象后如何循环嵌套对象并推送字段

问题描述

从以下数据结构中,我有以下 3 项:

如何

我想做的事

我想编写一个函数javascript/es6来循环遍历这些对象,检查andid并将其推送到一个名为 的新对象数组中。(如果任何 id 包含相同的,则不应将其推送到下面的新数组)accountNumbergroupresultsaccountnumber

# new array 
# results = [
{
    id: 1,
    accountNumber: 2289,
  },
  {
    id: 2,
    accountNumber: 9920,
  },
]

由于我的背景,python我正在努力实现这一目标。任何帮助都会非常有帮助。

标签: javascriptreactjsreact-nativeecmascript-6ecmascript-5

解决方案


假设所有其他数据对象属性都不相关,并且我正确地表示了您的数据(图像被裁剪):

const data = [
  {group: {id: 1, name:"name1", accountNumber: 1234}, plan:{}, plan_account:{}, plan_benefits:{}},
  {group: {id: 2, name:"name2", accountNumber: 1235}, plan:{}, plan_account:{}, plan_benefits:{}},
  {group: {id: 3, name:"name3", accountNumber: 1234}, plan:{}, plan_account:{}, plan_benefits:{}},
  {group: {id: 4, name:"name4", accountNumber: 1236}, plan:{}, plan_account:{}, plan_benefits:{}},
  {group: {id: 5, name:"name5", accountNumber: 1237}, plan:{}, plan_account:{}, plan_benefits:{}},
]

const result = data.reduce((result, obj) => { 
    if(result.some(ele => ele.accountNumber === obj.group.accountNumber)) return result; 
    result.push({id: obj.group.id, accountNumber: obj.group.accountNumber});
    return result;
}, []);

//will filter out id 3 since it has same accountNumber as id 1
console.log(result)


推荐阅读