Lodash Javascript 基于唯一属性值返回元素
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;
});
请参阅此 Plnkr。
相关文章:
- 窗口对象属性返回一个dom节点
- 根据其他属性返回的值设置属性
- 访问javascript对象的属性返回undefined,原因是什么
- 将javascript(jQuery)对象属性返回到默认状态
- 如何设置我们从 JavaScript 中其他元素的属性返回的值 onclick 函数
- JQuery 最接近属性返回未定义
- 为什么我的模型中的默认属性返回未定义
- 筛选器深层嵌套属性返回空数组
- 为什么属性返回未定义而不是对象
- JavaScript 和 jQuery,创建和使用一个对象.属性返回未定义
- Ember异步计算属性返回未定义的
- 连接对象的值's属性返回NaN(Javascript)
- parseInt正在为CSS属性返回NaN
- (ember.js)Get-Binding属性返回undefined
- ArrayController属性返回字符串字面量
- jQuery - get属性返回undefined
- 属性返回原始值,而不是通过方法调用更新的值
- 在等待$onInit回调完成时,我应该为Angular绑定的属性返回什么?
- 如何从数据值属性返回负值?
- 遍历对象属性返回所有对象属性