Objekto paieška pagal id "JavaScript" objektų masyve

Turiu masyvą:

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

Man nepavyksta pakeisti masyvo struktūros. Man perduodamas id 45, ir aš noriu gauti `'bar'ą'tam objektui, esančiam masyve.

Kaip tai padaryti JavaScript arba naudojant jQuery?

Manau, kad paprasčiausias būdas būtų toks, bet jis neveiks Internet Explorer 8 (ar ankstesniuose):

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

Išbandykite šiuos veiksmus

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;
}
Komentarai (5)

Iteriuokite bet kurį masyvo elementą. Kiekvienam aplankytam elementui patikrinkite jo id. Jei jis sutampa, grąžinkite jį.

Jei norite tik koduoti:

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
}

Tą patį galite padaryti ir naudodami ECMAScript 5'Array metodus:

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];
}
Komentarai (0)