Ich versuche, die eindeutigen Elemente in jeder Spalte eines JSON-Array zu bekommen. Ich möchte dies konvertieren:Teilen eines jsonarray basierend auf Schlüssel mit lodash Unterstrich
var items = [{ "name": "Typ 1", "id": 13}, { "name": "Typ 2", "id": 14} , {"name": "Typ 3", "id": 14}, {"name": "Typ 3", "id": 13}, {"name": "Typ 2", "id": 12}, {"name": "Typ 3", "id": 12}];
in
[{ "Typ 1", "Typ 2", "Typ 3"}, {12,13,14}]
Das ist, was ich versucht
var uniq1 = _.map(_.uniqBy(items, 'id'), 'id');
var uniq2 =_.map(_.uniqBy(items, 'name'), 'name')
console.log(uniq1,uniq2)
Fiddle: https://jsfiddle.net/yogeshwaran/5ntfzss1/
Aber das scheint t o eine ineffiziente Lösung für meinen Anwendungsfall, da mein realer Datensatz viel größer ist (100000 Elemente mit 6 Schlüsseln in jedem Element). Gibt es eine Möglichkeit, alle eindeutigen Werte für jeden der Schlüssel zu erhalten. Ich möchte nicht jedes Mal über den gesamten Satz hinweg iterieren. Mein idealer Ansatz wäre: 1. Teilen Sie das Array basierend auf Tasten. 2. Dann finden Sie die eindeutige in jedem der Split. 3. Verbinden Sie die Ergebnisse.
Danke.
Sie können entweder Vanille js oder eine neue verwenden js Sets (achten Sie auf Browser-Unterstützung), um effizienter zu arbeiten – juvian
Machst du das im Browser für eine Webanwendung oder nur für die Verarbeitung von JSON-Daten? Wenn letzteres zutrifft, empfehle ich 'jq' für die Behandlung großer JSON-Datasets und hat viele nette [Hilfsfunktionen] (https://stedolan.github.io/jq/manual/#TypesandValues). – aug