【发布时间】:2016-10-10 15:29:03
【问题描述】:
我有对象数组,对象有属性“a”、“b”和“c”。 现在我需要过滤掉具有“a & b”唯一值的对象。 然而,c 在保留哪些对象和拒绝哪些对象方面发挥作用。
如果我对属性 a 和 b 执行 uniqBy,我将盲目拒绝其他对象。它会将遇到的第一个对象保留在数组中,并拒绝所有其他重复对象。
如果您需要对该问题进行更多说明,请告诉我。
这就是我根据两个属性找到 uniq 对象的方式。 var uniqArray= _.uniqBy(obj, function(elem) { return [elem.a, elem.b].join(); })
lodash uniq - choose which duplicate object to keep in array of objects
我们有更好的解决方案吗?
这是输入和预期输出的示例 输入: var arrayOfObj = [{a:1, b:1, c:2}, {a:1,b:1,c:1}, {a:2, b:2,c:2}]; 输出:arrayOfObj = [{a:1,b:1,c:1}, {a:2, b:2,c:2}];不应该有任何重复的 a1,b1 组合
【问题讨论】:
-
输入数据和预期结果的示例会很好。
-
当然。输入: var arrayOfObj = [{a:1, b:1, c:2}, {a:1,b:1,c:1}, {a:2, b:2,c:2}];输出:arrayOfObj = [{a:1,b:1,c:1}, {a:2, b:2,c:2}];不应该有任何重复的 a1,b1 组合。
-
在我的例子中,''c" 是时间戳,所以如果我按 desc 顺序排序,即最新的时间戳在前,我不确定它是否会正确排序。
-
您能否添加一个输入和预期输出的示例?谢谢。
标签: lodash