How to get nested object property with pluck in Lodash

I’m a big fan of Stack Overflow and I tend to contribute regularly (am currently in the top 0.X%). In this category (stackoverflow) of posts, I will be posting my top rated questions and answers. This, btw, is allowed as explained in the meta thread here.
This Lodash question was actually asked by myself:
I have an array of objects like this:
var characters = [
{ 'name': 'barney', 'age': 36, 'salary':{'amount': 10} },
{ 'name': 'fred', 'age': 40, 'salary':{'amount': 20} },
{ 'name': 'pebbles', 'age': 1, 'salary':{'amount': 30} }
];
I want to get the salary amounts into an array. I managed to do it by chaining two pluck functions, like this:
var salaries = _(characters)
.pluck('salary')
.pluck('amount')
.value();
console.log(salaries); //[10, 20, 30]
Is there a way to do this by using only one pluck? Is there a better way with some other function in lodash?
The answer, from user thefourtheye, was:
You can just give the path to be used as a string, like this
console.log(_(characters).pluck('salary.amount').value()) // [ 10, 20, 30 ]Or use it directly
console.log(_.pluck(characters, 'salary.amount')); // [ 10, 20, 30 ]https://twitter.com/HitmanHR/status/670237244695977984





Leave a Comment