В массиве объектов самый быстрый способ найти индекс объекта, чьи атрибуты соответствуют запросу

Я немного порылся в поисках эффективного способа сделать это, но так ничего и не нашел. У меня есть массив объектов, который выглядит следующим образом:

array[i].id = some number;
array[i].name = some name;

Что я хочу сделать, так это найти ИНДЕКСЫ объектов, где id равен, например, одному из 0,1,2,3 или 4. Я полагаю, я мог бы просто сделать что-то вроде:

var indexes = [];
for(i=0; i<array.length; i++) {
  (array[i].id === 0) ? { indexes[0] = i }
  (array[i].id === 1) ? { indexes[1] = i }
  (array[i].id === 2) ? { indexes[2] = i }
  (array[i].id === 3) ? { indexes[3] = i }
  (array[i].id === 4) ? { indexes[4] = i }
}

Хотя это сработает, это выглядит довольно дорого и медленно (не говоря уже о том, что это уродливо), особенно если array.length может быть большим. Любые идеи о том, как украсить это немного? Я как-то думал об использовании array.indexOf, но не понимаю, как заставить синтаксис. Это

array.indexOf(this.id === 0);

, например, возвращает undefined, как, вероятно, и должно быть. Заранее спасибо!

129
задан Petrov 11 May 2012 в 19:30
поделиться