Iskanje predmeta po id v polju predmetov JavaScript

Imam polje:

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

Ne morem spremeniti strukture polja. Predan mi je id 45 in želim dobiti 'bar' za ta objekt v polju.

Kako naj to storim v javascriptu ali z uporabo jQueryja?

Mislim, da bi bil najlažji način naslednji, vendar ne bo deloval na Internet Explorer 8 (ali prej):

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

Poskusite naslednje

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

Iterirajte nad katerim koli elementom v polju. Za vsak element, ki ga obiščete, preverite njegov id. Če se ujema, ga vrnite.

Če želite samo kodo:

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
}

Enako storite z uporabo metod ECMAScripta 5'Array:

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