gpt4 book ai didi

javascript - 将公共(public)对象追加到一个数组中并删除重复项

转载 作者:行者123 更新时间:2023-12-01 02:35:34 24 4
gpt4 key购买 nike

我正在尝试从 Javascript 数组中删除重复的对象。

我有一个这样的对象

var actualObj = [
{
"name": "Sam",
"id": "1",
"dept": "Inventory",
"info": {
"key1": "test1",
"key2": "test2",
"key3": "test3"
}
},
{
"name": "Paul",
"id": "2",
"dept": "Inventory",
"info": {
"key1": "test1",
"key2": "test2",
"key3": "test3"
}
},
{
"name": "Sam",
"id": "1",
"dept": "Inventory",
"info": {
"key4": "test4",
"key5": "test5",
"key6": "test6"
}
}
]

我试图删除重复项并将“信息”合并到对象数组中,如下所示

var expectedObj = [
{
"name": "Sam",
"id": "1",
"dept": "Inventory",
"info": [
{
"key1": "test1",
"key2": "test2",
"key3": "test3"
},
{
"key4": "test4",
"key5": "test5",
"key6": "test6"
}
]
},
{
"name": "Paul",
"id": "2",
"dept": "Inventory",
"info": {
"key1": "test1",
"key2": "test2",
"key3": "test3"
}
}
]

在“info”对象中具有相同的值,我尝试使用 Lodash,效果很好 JSFIDDLE

任何人都可以帮助我从实际对象实现预期对象。我正在尝试通过组合为具有相似 id 值的一个对象来创建预期的对象。

最佳答案

使用lodash,_.groupBy()id 列出的项目,然后 _.map()使用 _.omit() 将组转换为请求的格式获取没有信息的基础对象,_.map() 获取info 数组。使用 _.assign() 组合到单个对象:

var actualObj = [{"name":"Sam","id":"1","dept":"Inventory","info":{"key1":"test1","key2":"test2","key3":"test3"}},{"name":"Paul","id":"2","dept":"Inventory","info":{"key1":"test1","key2":"test2","key3":"test3"}},{"name":"Sam","id":"1","dept":"Inventory","info":{"key4":"test4","key5":"test5","key6":"test6"}}];

var result = _(actualObj)
.groupBy('id')
.map(function(group) {
return _.assign(_.omit(group[0], 'info'), {
info: _.map(group, 'info')
});
})
.value();

console.log(result);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

关于javascript - 将公共(public)对象追加到一个数组中并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47952279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com