Lodash Javascript Return 基于唯一 属性 值的元素
Lodash Javascript Return Elements Based Of Off Unique Property Values
我正在尝试使用 lodash,但找不到 javascript 函数来执行此操作:
[
{item: {id: 1}, 'name': 'hi'},
{item: {id: 2}, 'name': 'hey'},
{item: {id: 1}, 'name': 'hello'}
];
然后变成
[
{item: {id: 1}, 'name': 'hi'},
{item: {id: 2}, 'name': 'hey'}
];
到目前为止我在javascript中有这个:
var mainThings = [
{item: {id: 1}, 'name': 'hi'},
{item: {id: 2}, 'name': 'hey'},
{item: {id: 1}, 'name': 'hello'}
];
uniqueMainsFunc = function() {
var ids = [],
mains = [];
_.forEach(mainThings, function(thing) {
if (ids.indexOf(thing.item.id) === -1) {
ids.push(thing.item.id);
mains.push(thing);
}
});
return uniqueMains;
};
在这种情况下,uniqueMains 将仅包含:
[
{item: {id: 1}, 'name': 'hi'},
{item: {id: 2}, 'name': 'hey'}
]
有没有lodash函数可以更好地处理这个问题?
在 .forEach 之后我尝试使用 !_.some(uniqueNestedIds, thing.item.id) 但它没有用。
uniqBy方法可以解决你的问题
var mainThings = [
{ item: { id: 1 }, 'name': 'hi' },
{ item: { id: 2 }, 'name': 'hey' },
{ item: { id: 1 }, 'name': 'hello' }
];
var uniq = _.uniqBy(mainThings, 'item.id')
console.log(uniq);
结果:
[ { item: { id: 1 }, name: 'hi' },
{ item: { id: 2 }, name: 'hey' } ]
您可以为此使用 _.uniqBy
:
_.uniqBy(mainThings, function(item) {
return item.item.id;
});
参见this Plnkr。
我正在尝试使用 lodash,但找不到 javascript 函数来执行此操作:
[
{item: {id: 1}, 'name': 'hi'},
{item: {id: 2}, 'name': 'hey'},
{item: {id: 1}, 'name': 'hello'}
];
然后变成
[
{item: {id: 1}, 'name': 'hi'},
{item: {id: 2}, 'name': 'hey'}
];
到目前为止我在javascript中有这个:
var mainThings = [
{item: {id: 1}, 'name': 'hi'},
{item: {id: 2}, 'name': 'hey'},
{item: {id: 1}, 'name': 'hello'}
];
uniqueMainsFunc = function() {
var ids = [],
mains = [];
_.forEach(mainThings, function(thing) {
if (ids.indexOf(thing.item.id) === -1) {
ids.push(thing.item.id);
mains.push(thing);
}
});
return uniqueMains;
};
在这种情况下,uniqueMains 将仅包含:
[
{item: {id: 1}, 'name': 'hi'},
{item: {id: 2}, 'name': 'hey'}
]
有没有lodash函数可以更好地处理这个问题? 在 .forEach 之后我尝试使用 !_.some(uniqueNestedIds, thing.item.id) 但它没有用。
uniqBy方法可以解决你的问题
var mainThings = [
{ item: { id: 1 }, 'name': 'hi' },
{ item: { id: 2 }, 'name': 'hey' },
{ item: { id: 1 }, 'name': 'hello' }
];
var uniq = _.uniqBy(mainThings, 'item.id')
console.log(uniq);
结果:
[ { item: { id: 1 }, name: 'hi' },
{ item: { id: 2 }, name: 'hey' } ]
您可以为此使用 _.uniqBy
:
_.uniqBy(mainThings, function(item) {
return item.item.id;
});
参见this Plnkr。