gpt4 book ai didi

javascript - 如果为空,如何分配属性

转载 作者:行者123 更新时间:2023-11-30 21:07:52 25 4
gpt4 key购买 nike

我有一组具有重复 ID 的对象。每个与 id 关联的对象都有一个属性 A 和属性 B。对于每个循环,第一个索引数组的属性 A 有值,但属性 B 为空。在第二个索引数组中,属性 A 为空,属性 B 具有值。前两个索引会根据同一个id合并。输出不会同时为属性 A 和属性 B 生成值,但其中一个仍然为空。

数组

{
id: 123,
A: “value A1”
B: null
},
{
id: 123,
A: null,
B: “value b”
},
{
id: 123,
A: “value A2”
B: null
},
{
id: 456,
A: "a2 value",
B: "b2 value"
}

代码

var output = _.groupBy(arr, function(o){
return o.id;
})

输出

{
id: 123,
A: [“value A1”,“value A2”]
B: null
},
{
id: 456,
A: ["a2 value"],
B: "b2 value"
}

预期

{
id: 123,
A: [“value A1”,“value A2”]
B: “value b”
},
{
id: 456,
A: ["a2 value"],
B: "b2 value"
}

最佳答案

你可以不用下划线和 loadash:

var arr = [
{
id: 123,
A: "value A1",
B: null
},
{
id: 123,
A: null,
B: "value b"
},
{
id: 123,
A: "value A2",
B: null
},
{
id: 456,
A: "a2 value",
B: "b2 value"
}
];

var arr2 = arr.reduce((m, o) => {
var sameObj = m.find(it => it.id === o.id);
if (sameObj) {
o.A && (sameObj.A.push(o.A));
sameObj.B = sameObj.B || o.B;
} else {
o.A = o.A ? [o.A] : [];
m.push(o);
}
return m;
}, []);

console.log(arr2);

关于javascript - 如果为空,如何分配属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46442724/

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