А зачем вам эти фильтры и прочая тряхомудия?
function myLovelySearch(arr,val,fld){ fld=fld||'id'; for(var i=0;i<arr.length;i++) if(typeof arr[i][fld]!=='undefined' && val==arr[i][fld]) return arr[i]; } var found = myLovelySearch(obj.num,'Два','name'); console.log(found.id); It's all folks. Проверка на ундефайнед нужна на случай, если такого поля там нет вообще. Что делать с нотфаунд в ООП - это уже отдельный стон. |
Цитата:
До этого вы писали примеры с IN, не помогут. вы предлагаете искать строку в заданном индексе, например индекс 2. А если у меня 10 индексов и я не знаю, в каком из них будет искомое значение. перебирать циклом? ок. Дальше, последнее ваше сообщение циклом обходит весь массив. Это в принципе не плохо, но в моем реальном случае получается так, что у меня есть массив из 10 элементов и есть 20 искомых значений. По идее мне нужно будет делать цикл по значение из 20 штук и на каждое делать вложенный цикл на поиск значения в 10 элементах. Долговато это будет. |
Цитата:
Забыл как умножить 10 на 20? Я помню, будет 200. Не многовато ли? Ну как тебе сказать, это примерно как если пописить в тихий океан и начать волноваться о затоплении Венеции. У тебя какой комп? 286 штоле? Какие блин 200? 200000 не заметишь нифига. Два миллиона итераций еще может будет заметно. Там же итерации микроскопические, хера ли тут думать, все равно у тебя нет другого способа. Нет, есть еще способ - можешь проиндексировать все поля. Приколись. |
Индексация знаешь как делается? Тебе ее придется сделать скриптом, получить из него скрипт, добить индексы в исходный код и впоследствии поддерживать все индексы когда данные будут удаляться, добавляться и изменяться.
Нравится? Вот так. Итерируй свои 200, для современного браузера это с гулькин член задача. |
И вообще задолбали оптимизаторы. Это дело по Фрейду знаешь как называется? - Анальная фиксация. Чтобы избавиться от этой фиксации, посмотри исходники хотя бы этого форума, он весь на жабе скрипучей. И еще один способ - задумайся о количестве итераций и ресурсов браузера для размочки жипега 1200 на 800 с последующей бикубической интерполяцией до 458 на сколько там. Одна такая картинка может зохавать в 100 раз больше, чем все твои скрипты вместе взятые.
|
Часовой пояс GMT +3, время: 00:57. |