最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - lodash: Filter collection using array of values - Stack Overflow

programmeradmin0浏览0评论

I found this solution:

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();

But the result contains only one value with somename1, how can I get all values with somename1?

I found this solution:

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();

But the result contains only one value with somename1, how can I get all values with somename1?

Share Improve this question asked Mar 20, 2017 at 19:50 PavelPavel 2,1934 gold badges24 silver badges42 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 9

If by all values you mean the objects, then

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

If you mean the description, then

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

For this kind of stuff you don't really need lodash anymore.

You can use find method to get one value

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

For all objects with somename1

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

Console.log the results are as expected

发布评论

评论列表(0)

  1. 暂无评论