gpt4 book ai didi

javascript - 从对象数组中删除一个元素

转载 作者:行者123 更新时间:2023-11-29 23:27:12 24 4
gpt4 key购买 nike

基本上我想对具有相同键值的对象进行分组。

const dupObj = [
{
"uuid": "",
"quantity": 0,
"distributeStoreUuid": "",
"distributeStore__acceptanceTaskDetailsUuid": "",
"acceptanceTaskUuid": "acabb997-fc06-47ba-ae29-d7aea9a6a022",
},
{
"uuid": "",
"quantity": 3,
"acceptanceTaskUuid": "acabb997-fc06-47ba-ae29-d7aea9a6a022",
}
]

这是预期的结果

[
{
"uuid": "",
"quantity": 3,
"distributeStoreUuid": "",
"distributeStore__acceptanceTaskDetailsUuid": "",
"acceptanceTaskUuid": "acabb997-fc06-47ba-ae29-d7aea9a6a022",
}
]

我正在试验 ES6 Set,这里是我目前所拥有的

const uniKeys = [...(new Set(dupObj.map(({ acceptanceTaskUuid }) => acceptanceTaskUuid)))];

有什么想法吗?提前致谢

最佳答案

下面的代码应该可以工作:

const dedupe = originalArray => originalArray.reduce((array, obj) => {
const index = array.findIndex(item => item.acceptanceTaskUuid === obj.acceptanceTaskUuid)

// if there already is no other acceptance task uuid
// then append the obj to the array else add the quantities together
return index === -1 ? [...array, obj] : Object.assign([], array, {
[index]: Object.assign({}, array[index], obj)
})
}, [])

console.log(dedupe([
{
"uuid": "",
"quantity": 0,
"distributeStoreUuid": "",
"distributeStore__acceptanceTaskDetailsUuid": "",
"acceptanceTaskUuid": "acabb997-fc06-47ba-ae29-d7aea9a6a022",
},
{
"uuid": "",
"quantity": 3,
"acceptanceTaskUuid": "acabb997-fc06-47ba-ae29-d7aea9a6a022",
},
{
"uuid": "",
"quantity": 4,
"acceptanceTaskUuid": "foobar"
},
{
"uuid": "",
"quantity": 13,
"acceptanceTaskUuid": "foobarbaz",
},
{
"uuid": "",
"quantity": 6,
"acceptanceTaskUuid": "foobar",
},
]))

findIndex 函数返回数组中与条件匹配的第一项的索引。基本上,上面的代码从一个空数组开始,遍历原始数组 (reduce) 并在每次迭代中找到与当前对象具有相同接受任务 uuid 的项目的索引。如果存在重复项,则将数量加在一起,否则将新项追加到数组中

编辑:不可变

关于javascript - 从对象数组中删除一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48679211/

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