Подтвердить что ты не робот

Underscore.js - получить уникальные значения свойств

Я только недавно обнаружил силу 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"]

то есть. нет дублированного и "имени".

Любые предложения, которые очень ценятся.

4b9b3361

Ответ 1

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

(Преобразуйте вложенные списки в плоский, выберите name из каждого из объектов в списке и сделайте его уникальным.)

Ответ 2

  • Сначала используйте flatten, чтобы преобразовать вложенный массив в плоский массив.
  • Затем pluck, чтобы получить значения "name" в виде массива
  • Наконец uniq

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

Fiddle

Ответ 3

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

Ответ 4

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

вышеуказанный код достаточен для извлечения другого атрибута "name"