javascript - 在javascript / es6中比较嵌套对象后如何循环嵌套对象并推送字段
问题描述
从以下数据结构中,我有以下 3 项:
- 假设它
group
有三个字段:id
,name
,accountNumber
并且因为我有三个项目,所以其中两个具有相同的accountNumber
.
我想做的事
我想编写一个函数javascript/es6
来循环遍历这些对象,检查andid
并将其推送到一个名为 的新对象数组中。(如果任何 id 包含相同的,则不应将其推送到下面的新数组)accountNumber
group
results
accountnumber
# new array
# results = [
{
id: 1,
accountNumber: 2289,
},
{
id: 2,
accountNumber: 9920,
},
]
由于我的背景,python
我正在努力实现这一目标。任何帮助都会非常有帮助。
解决方案
假设所有其他数据对象属性都不相关,并且我正确地表示了您的数据(图像被裁剪):
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)
推荐阅读
- python - 应该创建文件时找不到文件错误(仅当我将当前日期添加到名称时)
- react-native - React Native - 没有这样的文件或目录,打开 'app\build\intermediates\merged_manifests\debug\AndroidManifest.xml'
- laravel - 嵌套集合上的 Laravel 拒绝函数
- excel - 删除具有不同条件的行时删除标题
- python - AWS Glue S3 到 Redshift,将 json 分解为多行
- visual-c++ - 多行宽字符串常量,允许 C++ 中的单行注释
- testing - 将使用测试和反馈扩展创建的探索性测试合并到现有的测试套件中
- pip - Python3 找不到 statsmodels.api 但我可以,我的 linter 也可以
- twilio - Twilio 更新任务的当前队列
- scala - 我们可以编写一个自定义方法将数据从 S3 存储桶加载到 Spark DataFrame 中吗