Есть ли более элегантный способ написать эту строку кода?Сопоставление массива объектов и использование только уникальных
_.chain(_.uniqBy(someArray,"someProperty.name")).map("someProperty").value();
кажется, что я должен быть в состоянии цепи его, вместо того, чтобы гнездиться на lodash .uniqBy называют внутри вызова .chain.
Я ожидаю, что следующее будет работать, но это не будет.
_.chain(someArray).map("someProperty").value().uniqBy("name");
вход является:
someArray = [
{
aProp: '1',
anotherProp: '2',
thirdProp: '3',
someProperty: {
id: 1,
name: "john"
}
},
{
aProp: '3',
anotherProp: '4',
thirdProp: '5',
someProperty: {
id: 1,
name: "john"
}
},
{
aProp: '2',
anotherProp: 'f',
thirdProp: '6',
someProperty: {
id: 2,
name: "tom"
}
},
{
aProp: 't',
anotherProp: 'g',
thirdProp: 'f',
someProperty: {
id: 3,
name: "yacob"
}
},
];
Вывод должен быть:
[{id:1, name:"john"},{id:2, name:"tom"},{id:3, name:"yacob"}]
Также вам не нужно иметь 'цепочку', которую вы можете сделать:' _ (data) .map ('someProperty'). UniqBy ('id'). Value() ' – Mike
In в какой ситуации вам понадобится использовать цепочку? –
'_ (data)' является цепочкой _implicit_, поэтому мы не должны вызывать 'value', если последний метод возвращает один объект:' _ (data) .map ('someProperty'). UniqBy ('id'). Get (0) '. Если это поведение нежелательно или мы хотим совместить интерфейс подчеркивания, мы могли бы использовать цепочку _explicit_, которая всегда должна быть развернута вручную. –