Часто я получаю доступ к определенному объекту из объекта или массива объектов, которые индексируются произвольными индексами, но для меня нужен тот, кто имеет ключ, соответствующий конкретному значению ,Лучший способ поиска объекта
Например:
var cars = [
{ id:23, make:'honda', color: 'green' },
{ id:36, make:'acura', color:'silver' },
{ id:18, make:'ford', color:'blue' },
{ id:62, make:'ford', color:'green' },
];
Пусть мне нужно один из этих записей, и я знаю эту запись уникальной; например, где id = 18.
Прямо сейчас, Я делаю это следующим образом:
function select(key,val,arr){
for(var i in arr){
if(arr[i][key]==val) return(arr[i]);
}
return(null); // object not present in arr
}
var id = 18;
var car = select('id', id, cars);
// car = { id:18, make:'ford', color:'blue' }
Но это кажется громоздким и плохо масштабируется, как она изменяется в производительности. Значение из большого набора данных может быть возвращено очень быстро, если его к началу массива или, в худшем случае, займет столько же итераций, сколько и записей. Это также кажется очень расточительным, если значение вообще не существует, поскольку вы только что перечислили все объекты, чтобы получить нулевой результат.
Есть ли более элегантный способ поиска массива или объекта для значения, если критерии поиска не являются тем же параметром, что и ключи объекта?
не использовать 'for ... in' на' array' –