我正在尝试使用lodash.js删除重复的项目,但我无法使其正常工作。
这是数组中对象的结构:
{
label: 'tagA',
value: 1
}
那就说我有这个数组:
var objectsArray = [
{
label: 'tagA',
value: 1
},
{
label: 'tagB',
value: 2
},
{
label: 'tagC',
value: 3
},
{
label: 'tagB',
value: 4
},
{
label: 'tagB',
value: 5
},
];
我使用lodash.js中的_.uniqBy()函数创建了这段代码,尝试删除具有相同标签的数组元素,但它不能像我预期的那样工作:
var uniq = _.uniqBy(objectsArray, function(o){
return o.label;
});
我基于在这里和那里找到的一些样本和当然的lodash文档,但我在这方面缺乏知识,所以任何帮助都会超级欣赏它。
感谢。
答案 0 :(得分:5)
确保使用正确的命名,该代码适用于我:
var arr = [
{
label: 'tagA',
value: 1
},
{
label: 'tagB',
value: 2
},
{
label: 'tagC',
value: 3
},
{
label: 'tagB',
value: 4
},
{
label: 'tagB',
value: 5
},
];
var uniq = _.uniqBy(arr, function(o){
return o.label;
});
console.log(uniq); // >> Returned an array with first 3 objects from array arr
答案 1 :(得分:0)
我认为第二个例子就是你需要的uniqBy:
// The `_.property` iteratee shorthand.
_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
// → [{ 'x': 1 }, { 'x': 2 }]
答案 2 :(得分:0)
如果您想确保可以使用uniqWith();
这对我有用
var data = [
{
label: 'tagA',
value: 1
},
{
label: 'tagB',
value: 2
},
{
label: 'tagC',
value: 3
},
{
label: 'tagB',
value: 4
},
{
label: 'tagB',
value: 5
},
];
var filtered = _.uniqWith(data, function(first, second){
return first.label === second.label
});