JS-使用lodash删除数组中的重复对象

时间:2018-08-28 06:05:46

标签: javascript reactjs loops

例如,我有这个数组:

0: {myfield: "1f974a20-aa59-11e8-9653-ab3419ed3bc9", order: 0, value: ""}
1: {myfield: "1f974a20-aa59-11e8-9666-ab3419ed3bc9", order: 0, value: ""}
2: {myfield: "1f974a20-aa59-11e8-9653-ab3419ed3bc9", order: 0, value: "One"}
3: {myfield: "af7401a0-aa6e-11e8-9653-ab3419ed3bc9", order: 1, value: "Two"}

我想遍历它并弹出/删除旧版本的重复数组,在此示例中,我想保留对象2 并弹出/删除对象0 因为它们都具有完全相同的myfield

是否可以使用lodash做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用_.uniqBy()

let arr = [ {myfield: "1f974a20-aa59-11e8-9653-ab3419ed3bc9", order: 0, value: ""}, {myfield: "1f974a20-aa59-11e8-9666-ab3419ed3bc9", order: 0, value: ""}, {myfield: "1f974a20-aa59-11e8-9653-ab3419ed3bc9", order: 0, value: "One"}, {myfield: "af7401a0-aa6e-11e8-9653-ab3419ed3bc9", order: 1, value: "Two"}];

let result = _.uniqBy(arr, 'myfield');

答案 1 :(得分:0)

尝试使用isEqualuniqWith方法对对象数组进行深度均衡。

var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.uniqWith(objects, _.isEqual);

以下是文档的链接:https://lodash.com/docs/4.17.10#uniqWith