Ich bin mir nicht sicher, Regeln zu veröffentlichen, aber ich werde Ihnen sagen, dass dies eine Frage von this one ist, aber ich frage, ob dies der "Best Practice" Weg ist, dies zu tun?Effizientere Art, ein Array von Javascript-Objekten zu durchsuchen?
Antwort
Das ist der direkte Weg, dies zu tun. Wenn Sie mehrmals schnell Zugriff benötigen, sollten Sie eine Zuordnung erstellen, die durch den Namen der Eigenschaft verschlüsselt wird, nach der Sie suchen.
Hier ist eine Funktion, die Arrays aufnimmt und Keyed Maps erstellt. Es ist nicht universell, aber Sie sollten es für Ihre eigenen Zwecke ändern können.
/**
* Given an array and a property name to key by, returns a map that is keyed by each array element's chosen property
* This method supports nested lists
* Sample input: list = [{a: 1, b:2}, {a:5, b:7}, [{a:8, b:6}, {a:7, b:7}]]; prop = 'a'
* Sample output: {'1': {a: 1, b:2}, '5': {a:5, b:7}, '8': {a:8, b:6}, '7':{a:7, b:7}}
* @param {object[]} list of objects to be transformed into a keyed object
* @param {string} keyByProp The name of the property to key by
* @return {object} Map keyed by the given property's values
*/
function mapFromArray (list , keyByProp) {
var map = {};
for (var i=0, item; item = list[i]; i++) {
if (item instanceof Array) {
// Ext.apply just copies all properties from one object to another,
// you'll have to use something else. this is only required to support nested arrays.
Ext.apply(map, mapFromArray(item, keyByProp));
} else {
map[item[keyByProp]] = item;
}
}
return map;
};
@jondavidjohn - Sie können diese Javascript-lib, DefiantJS (http://defiantjs.com) verwenden, mit dem Sie Übereinstimmungen mit XPath auf JSON Strukturen filtern. Um es in JS-Code zu setzen:
var data = [
{
"restaurant": {
"name": "McDonald's",
"food": "burger"
}
},
{
"restaurant": {
"name": "KFC",
"food": "chicken"
}
},
{
"restaurant": {
"name": "Pizza Hut",
"food": "pizza"
}
}
].
res = JSON.search(data, '//*[food="pizza"]');
console.log(res[0].name);
// Pizza Hut
Hier ist eine Arbeitsgeige;
http://jsfiddle.net/hbi99/weKVL/
DefiantJS erweitert das globale Objekt mit der Methode "search" und gibt ein Array mit Übereinstimmungen zurück (leeres Array, wenn keine Übereinstimmungen gefunden wurden). Sie können die Lib- und XPath-Abfragen mit dem XPath Evaluator hier ausprobieren:
- 1. effizientere Art und Weise ein spezifische Bandmatrix
- 2. Eine effizientere Art, mit DataSets zu arbeiten
- 3. Effizientere Art der Zusammenführung von zwei Arrays
- 4. Effizientere Art, diese Abfrage zu schreiben?
- 5. effizientere Art der Verwendung von SQL OR?
- 6. Haskell Effizientere Art, Datei von Ziffernzeilen zu analysieren
- 7. WPF: Effizientere Art, schnell wechselnde Bilder anzuzeigen?
- 8. Effizientere Art der UI-Aktualisierung von Service als Intents?
- 9. effizientere Art des Schreibens von Funktionen für Tasten
- 10. AS3 - Ist es möglich, ein Array nach Objekteigenschaften zu durchsuchen?
- 11. Setzen Bereich in ein Array für effizientere Schleifen
- 12. effiziente Art und Weise Array von Person zu filtern, auf einem Array von String-Namen Objekten
- 13. Durchsuchen von Werten im dynamischen Array (vba)
- 14. effizientere Version von diesem?
- 15. Effizientere Art, in Rails den Befehl "destroy_all" auszuführen?
- 16. So durchsuchen Sie ein NSMutableArray
- 17. Art ein Array Zeiger und ohne Indexvariablen
- 18. Von Javascript-Array zu einem Bild von einer Art
- 19. ColdFusion - Was ist eine effiziente Möglichkeit, ein Array von Strukturen zu durchsuchen?
- 20. Art ein $ Array von ints durch Wiederholung und entfernen Wiederholungen
- 21. Gibt es eine Möglichkeit, eine Datei zu durchsuchen, ohne das Ganze in ein Array zu laden?
- 22. Wie kann ich ein Array effizient durchsuchen, um Formularfelder auszufüllen?
- 23. Gibt es eine effizientere/elegantere Art, diesen Code zu schreiben, den ich habe?
- 24. Gibt es eine effizientere Art und Weise dieses Jsoup Code zu schreiben
- 25. Die eleganteste Art, Array nach anderem Array zu filtern
- 26. Was ist die effizienteste Art, ein UIImageView zu verschieben?
- 27. Versuchen, eine effizientere Möglichkeit zum Filtern von Dateien zu finden
- 28. Curses Array durchsuchen mit Tastatur in Ruby
- 29. Effizientere Code
- 30. Effizientere SQL zum Zählen von mehreren Tabellen