Underscore.js - get unique property values

南楼画角 提交于 2019-12-04 17:08:15

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!