lodash:使用值数组过滤集合

时间:2017-03-20 19:50:30

标签: javascript underscore.js lodash

我找到了这个解决方案:

var collections = [
    {name: 'somename1',  desctiption: 'xyz'}, 
    {name: 'somename',   desctiption: 'ds'},
    {name: 'somename',   desctiption: 'rtrt'},
    {name: 'somename2',  desctiption: 'nhf'},
    {name: 'somename1',  desctiption: 'qwe'}
];

names = ['somename1', 'somename2']

_(collections)
    .keyBy('name')
    .at(names)
    .value();

但结果只包含 somename1 的一个值,如何使用 somename1 获取所有值?

2 个答案:

答案 0 :(得分:9)

如果所有值都是对象,那么

const values = collections.filter(e => ['somename1', 'somename2'].includes(e.name))

如果您的意思是描述,那么

const descriptions = values.map(e => e.description)

对于这种东西,你不再需要lodash了。

答案 1 :(得分:0)

您可以使用find方法获取一个值

_.find(collections,{name : 'somename1'})

对于somename1的所有对象

_.pullAllWith(collections,{ name : 'somename1'})

Console.log结果符合预期