Firefox 25 で Array.prototype.{find, findIndex} が実装された

[].indexOf に似ているけど、より汎用的なメソッド

forEach, map, some, every 等と同様にコールバックを引数にとって、true を返したものの、値またはindex値を返すメソッドである。

実装見たほうが分かりやすいかも。(ちょっと特殊だけどJavaScriptで書かれてるよ!)

Array.prototype.find
http://mxr.mozilla.org/mozilla-central/source/js/src/builtin/Array.js#395
Array.prototype.findIndex
http://mxr.mozilla.org/mozilla-central/source/js/src/builtin/Array.js#433

テストコードは http://mxr.mozilla.org/mozilla-central/source/js/src/tests/ecma_6/Array/find_findindex.js ね。

var list = [
  {
    id: 10,
    data: "A",
  }, {
    id: 13
    data: "B",
  }, {
    id: 5,
    data: "C",
  },
];

list.find( item => item.id > 10 ); // { id: 13, data: "B" }
list.findIndex( item => item.id > 10 ); // 1

Array.prototype.indexOf, lastIndexOf が === による等値演算だったため、無理やり取る方法としてlist.filter(function()...)[0] みたいな非効率なこと(欲しいの最初の一つだけでもlist内全てを舐めていた)をしてたりしたけど、これで true が返った時点でループは終了するので少しは効率的になりそう。

リストが大きいほど検索に時間がかかるの仕組みなのは変わらないけどね。