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 badges2 Answers
Reset to default 9If 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