私は配列を持っています。
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]
配列の構造を変更することができません。45というIDを渡され、配列の中のそのオブジェクトの
'bar'`を取得したいのです。
JavaScriptやjQueryを使ってどのようにすればよいでしょうか?
一番簡単なのは以下の方法だと思いますが、Internet Explorer 8(またはそれ以前)では動作しません。
var result = myArray.filter(function(v) {
return v.id === '45'; // Filter out the appropriate one
})[0].foo; // Get result and access the foo property
配列内の任意のアイテムをイテレートします。訪れたすべてのアイテムについて、そのアイテムのidをチェックします。一致した場合、それを返します。
ただコードを知りたいだけなら
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
}
ECMAScript 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];
}