Jag har en array:
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]
Jag kan inte ändra strukturen på matrisen. Jag får ett id på 45
, och jag vill få fram 'bar'
för det objektet i matrisen.
Hur gör jag detta i JavaScript eller med hjälp av jQuery?
Jag tror att det enklaste sättet är följande, men det fungerar inte på Internet Explorer 8 (eller tidigare):
var result = myArray.filter(function(v) {
return v.id === '45'; // Filter out the appropriate one
})[0].foo; // Get result and access the foo property
Iterera över alla objekt i matrisen. För varje objekt som du besöker kontrollerar du objektets id. Om det stämmer överens, returnera det.
Om du bara vill ha koden:
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
}
Samma sak med ECMAScript 5's Array-metoder:
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];
}