Bir dizim var:
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]
Dizinin yapısını değiştiremiyorum. Bana 45
id'si iletiliyor ve ben dizideki bu nesne için 'bar'
almak istiyorum.
Bunu JavaScript veya jQuery kullanarak nasıl yapabilirim?
Sanırım en kolay yol aşağıdaki olacaktır, ancak Internet Explorer 8 (veya daha önceki) üzerinde çalışmayacaktır:
var result = myArray.filter(function(v) {
return v.id === '45'; // Filter out the appropriate one
})[0].foo; // Get result and access the foo property
Dizideki herhangi bir öğe üzerinde yineleme yapar. Ziyaret ettiğiniz her öğe için, o öğenin kimliğini kontrol edin. Eğer bir eşleşme varsa, döndür.
Eğer sadece kod istiyorsan:
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
}
Aynı şeyi ECMAScript 5'in Array yöntemlerini kullanarak da yapabilirsiniz:
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];
}