Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обращение к объекту по значению свойства (https://javascript.ru/forum/misc/64960-obrashhenie-k-obektu-po-znacheniyu-svojjstva.html)

warren buffet 17.09.2016 19:07

А зачем вам эти фильтры и прочая тряхомудия?

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. Проверка на ундефайнед нужна на случай, если такого поля там нет вообще.

Что делать с нотфаунд в ООП - это уже отдельный стон.

neon_tmn 14.10.2016 08:06

Цитата:

Сообщение от warren buffet (Сообщение 428975)
А зачем вам эти фильтры и прочая тряхомудия?

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 элементах. Долговато это будет.

warren buffet 14.10.2016 08:10

Цитата:

Сообщение от neon_tmn
10 элементов и есть 20 искомых значений


Забыл как умножить 10 на 20? Я помню, будет 200. Не многовато ли? Ну как тебе сказать, это примерно как если пописить в тихий океан и начать волноваться о затоплении Венеции.

У тебя какой комп? 286 штоле? Какие блин 200? 200000 не заметишь нифига. Два миллиона итераций еще может будет заметно. Там же итерации микроскопические, хера ли тут думать, все равно у тебя нет другого способа.

Нет, есть еще способ - можешь проиндексировать все поля. Приколись.

warren buffet 14.10.2016 08:16

Индексация знаешь как делается? Тебе ее придется сделать скриптом, получить из него скрипт, добить индексы в исходный код и впоследствии поддерживать все индексы когда данные будут удаляться, добавляться и изменяться.

Нравится? Вот так. Итерируй свои 200, для современного браузера это с гулькин член задача.

warren buffet 14.10.2016 08:22

И вообще задолбали оптимизаторы. Это дело по Фрейду знаешь как называется? - Анальная фиксация. Чтобы избавиться от этой фиксации, посмотри исходники хотя бы этого форума, он весь на жабе скрипучей. И еще один способ - задумайся о количестве итераций и ресурсов браузера для размочки жипега 1200 на 800 с последующей бикубической интерполяцией до 458 на сколько там. Одна такая картинка может зохавать в 100 раз больше, чем все твои скрипты вместе взятые.


Часовой пояс GMT +3, время: 00:57.