gpt4 book ai didi

javascript - uniq 两个数组对象,且真值优先

转载 作者:行者123 更新时间:2023-11-29 15:21:09 25 4
gpt4 key购买 nike

我正在尝试在数组对象中进行数组操作,如下所示:

var first = [{
a: "one",
x: false
}, {
a: "two",
x: true
}, {
a: "three",
x: false
}, {
a: "one",
x: true
}, {
a: "two",
x: true
}, {
a: "four",
x: false
}];

预期结果:

// Result
[{
a: "one",
x: true
}, {
a: "two",
x: true
}, {
a: "three",
x: false
}, {
a: "four",
x: false
}];

如您所见,我试图省略对键 a 具有相同值的重复项,但在省略该对象之前,我想比较其他重复项并推送对象键 x 具有真值(如果没有可用的真值,那么我将仅推送 x: false)。 p>

我愿意使用 lodashunderscore 来实现这一点。

我尝试使用 _.unionBy_.uniqBy 但我无法理解如何正确考虑 x: true

最佳答案

使用 lodash。

按属性 a 分组。然后合并每个组内的对象;只保留真值。

let array = [
{a: 'one', x: false},
{a: 'two', x: true},
{a: 'three', x: false},
{a: 'one', x: true},
{a: 'two', x: true},
{a: 'four', x: false},
];

let result = _(array)
.groupBy('a')
.map(objects => _.mergeWith(...objects, (a, b) => a || b))
.value();

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

关于javascript - uniq 两个数组对象,且真值优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43607438/

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