Minulla on joukko:
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]
En pysty muuttamaan array:n rakennetta. Minulle välitetään id 45
, ja haluan saada 'bar'
kyseisen objektin arrayyn.
Miten teen tämän JavaScriptissä tai jQueryn avulla?
Mielestäni helpoin tapa olisi seuraava, mutta se ei toimi Internet Explorer 8:ssa (tai aikaisemmassa):
var result = myArray.filter(function(v) {
return v.id === '45'; // Filter out the appropriate one
})[0].foo; // Get result and access the foo property
Iteroi minkä tahansa kohteen yli. Tarkista jokaisen kohteen kohdalla, jonka kohdalla käyt, kyseisen kohteen id. Jos se täsmää, palauta se.
Jos haluat vain koodin:
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
}
Ja sama asia ECMAScript 5'n Array-metodeilla:
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];
}