JavaScriptオブジェクトの配列の中からidでオブジェクトを探す

私は配列を持っています。

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
解説 (5)

以下をお試しください。

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

配列内の任意のアイテムをイテレートします。訪れたすべてのアイテムについて、そのアイテムの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];
}
解説 (0)