Gibt es eine elegantere Art, diese Codezeile zu schreiben?Mapping Array von Objekten und nur einmalig
_.chain(_.uniqBy(someArray,"someProperty.name")).map("someProperty").value();
es scheint, wie ich es an die Kette der Lage sein sollte, anstatt die lodash der Verschachtelung innerhalb des .chain Anruf .uniqBy zu nennen.
Ich würde erwarten, dass das Folgende funktioniert, aber es wird nicht.
_.chain(someArray).map("someProperty").value().uniqBy("name");
Der Eingang ist:
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"
}
},
];
Die Ausgabe sollte:
[{id:1, name:"john"},{id:2, name:"tom"},{id:3, name:"yacob"}]
Sie müssen auch nicht haben "Kette" Sie können tun: '_ (Daten) .map ('someProperty'). UniqBy ('id'). Value()' – Mike
In In welcher Situation würdest du die Kette benutzen müssen? –
'_ (data)' ist eine _implicit_ chain, daher sollten wir 'value' nicht aufrufen, wenn die letzte Methode ein einzelnes Objekt zurückgibt:' _ (data) .map ('someProperty'). UniqBy ('id'). Get (0) '. Wenn dieses Verhalten unerwünscht ist oder wir die Unterstrichschnittstelle anpassen möchten, könnten wir eine _explicit_ Kette verwenden, die immer manuell ausgepackt werden sollte. –