Фильтровать через объекты с большой площадью (3000+)

6

javascript,angular,

JavaScript, угловой,

Ответов: 1


1

Я бы попробовал что-то вроде этого:

['abcd', 'abfer', 'xyds', 'irkd',...]

Очевидно, вы могли бы встроить array1функцию, но я думаю, что это более читаемо.


0

Чтобы игнорировать случаи:

значение [[0, 1], [0, 1], [0], [0, 2, 3], [1], [1], [], [], ...] === i. name.toLowerCase ()

Для частичного поиска вам может понадобиться регулярное выражение (Regex)


0

Вы можете использовать регулярное выражение следующим образом

array2


0

Вы можете сделать что-то вроде этого:

'bf'

Это сделает фильтр, нечувствительный к регистру, и вернет все элементы, содержащие какой-либо определенный текст.


0

Чтобы найти большой объем данных на лицевой стороне, это то, что я сделал на стороне javascript -

  1. Допустим, ваш массив данных (объект JSON) выглядит b(более 10 000 элементов) -f

  2. Когда вы загружаете свой массив из json, создайте массив javascript, который представляет собой двухмерный массив длиной 26 и каждый индекс сохранит индекс элемента для каждого символа. Например, для вышеприведенного массива ваш новый массив выглядит так: b- f Значение - char 'a' существует в 0-м элементе и 1-м элементе, char 'd' существует в элементе 0, 2, 3.

    Теперь ваш объект готов, и страница готова для быстрого поиска.

Когда пользователь вводит строку поиска, onkeyup вы это делаете -

  1. Предположим, что поиск пользователя intersected

  2. Из вашего массива на шаге 2 загрузите массивы для char bи char fи возьмите пересечение обоих. Теперь у вас будет все положение всех элементов, которые имеют char bи char f-//pseudo code var t = 0; $.each(intersected, function(k, v){ if(array1[k].indexOf(searchString) > -1){ results[t++] = array1[k]; } }); return results;

  3. Теперь вы перебираете массив пересечений, переходите непосредственно к этим индексам в исходном массиве (начиная с шага 1) и делаете indexOf ('bf')

    toLowerCase()

Таким образом, вы не перебираете все элементы в вашем массиве. Вы только перебираете элементы, которые будут искать пользовательские символы.

Чтобы обеспечить поиск без учета регистра, конвертировать все toLowerCase(), при подготовке array2и во время поиска

JavaScript, угловой,
Похожие вопросы