Objekt nach ID in einem Array von JavaScript-Objekten suchen

Ich habe ein Array:

myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]

Ich bin nicht in der Lage, die Struktur des Arrays zu ändern. Mir wird eine ID von "45" übergeben, und ich möchte "bar" für dieses Objekt im Array erhalten.

Wie kann ich dies in JavaScript oder mit jQuery tun?

Ich denke, die einfachste Methode wäre die folgende, aber sie funktioniert nicht mit Internet Explorer 8 (oder früher):

var result = myArray.filter(function(v) {
    return v.id === '45'; // Filter out the appropriate one
})[0].foo; // Get result and access the foo property
Kommentare (5)

Versuchen Sie Folgendes

function findById(source, id) {
  for (var i = 0; i < source.length; i++) {
    if (source[i].id === id) {
      return source[i];
    }
  }
  throw "Couldn't find object with id: " + id;
}
Kommentare (5)

Iterieren Sie über jedes Element im Array. Für jedes Element, das Sie besuchen, überprüfen Sie die ID des Elements. Wenn es eine Übereinstimmung ist, gib es zurück.

Wenn Sie nur den Codez wollen:

function getId(array, id) {
    for (var i = 0, len = array.length; i < len; i++) {
        if (array[i].id === id) {
            return array[i];
        }
    }
    return null; // Nothing found
}

Und das Gleiche mit den Array-Methoden von ECMAScript 5:

function getId(array, id) {
    var obj = array.filter(function (val) {
        return val.id === id;
    });

    // Filter returns an array, and we just want the matching item.
    return obj[0];
}
Kommentare (0)