Underscore.js - 获取唯一属性值

时间:2014-02-04 16:07:35

标签: javascript json underscore.js lodash

我最近才发现了underscore.js的强大功能,对我提出建议的方法还是新手:

我如何从中得到:

[
    [{
        "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
    }]
]

到此:

["Type 1","Type 2","Type 3"]

即。没有重复和“名称”属性。

任何建议都非常感谢。

5 个答案:

答案 0 :(得分:28)

_(data).chain().flatten().pluck('name').unique().value()

(将嵌套列表转换为平面列表,从列表中的每个对象中选择name,并使其唯一。)

答案 1 :(得分:10)

  • 首先使用flatten将嵌套数组转换为平面数组。
  • 然后pluck将“name”值作为数组
  • 最后uniq

_.uniq(_.pluck(_.flatten(items), "name"))

Fiddle

答案 2 :(得分:2)

var arr = _.uniq(_.map(_.flatten(array), function(e) {
    return e.name;
}));

答案 3 :(得分:2)

_.uniq(_.pluck(x,'name'));

上面的代码足以提取不同的名称"属性

答案 4 :(得分:1)

简单方法:

1。使用_.map获取所有名称

var names = _.map(items, function(item) { return item.name});

2。从该名称中获取_.uniq

var uniqueNames = _.uniq(names);