问题
I only recently discovered the power of underscore.js, still new to the methods I kindly ask for a suggestion:
How do I get from this:
[
[{
"name": "Type 2",
"id": 14
}],
[{
"name": "Type 1",
"id": 13
}, {
"name": "Type 3",
"id": 15
}],
[{
"name": "Type 2",
"id": 14
}],
[{
"name": "Type 1",
"id": 13
}]
]
to this:
["Type 1","Type 2","Type 3"]
i.e. no duplicated and "name" property only.
Any suggestions much appreciated.
回答1:
_(data).chain().flatten().pluck('name').unique().value()
(Convert the nested lists to a flat one, pick name from each of the objects in the list, and make it unique.)
回答2:
- Use flatten first, to convert the nested array to a flat array.
- Then pluck to get the "name" values as an array
- Finally uniq
_.uniq(_.pluck(_.flatten(items), "name"))
Fiddle
回答3:
var arr = _.uniq(_.map(_.flatten(array), function(e) {
return e.name;
}));
回答4:
_.uniq(_.pluck(x,'name'));
the above code is sufficient for extracting different "name" attribute
回答5:
Simple way:
1. use _.map to get all the names
var names = _.map(items, function(item) { return item.name});
2. Get the _.uniq from that names
var uniqueNames = _.uniq(names);
来源:https://stackoverflow.com/questions/21557431/underscore-js-get-unique-property-values