Поиск большого массива в Javascript более эффективно? - PullRequest
0 голосов
/ 03 октября 2018

Я пишу скрипт, который позволяет организовать записи и данные.

Однако проблема сейчас заключается в том, что я использую массив для хранения большого количества информации, и в какой-то момент в моем скрипте этот массив ищет соответствующий идентификатор и обновляется.Поиск данных начинает становиться довольно медленным, когда размер массива превышает 200 элементов.

Есть ли способ более эффективного поиска в массиве?

В настоящее время я использую поиск. (Function (a) {return x == y};);

Каждый элемент в моем массиве также является кортежем.

Пример кода:

   onPipelineChanged: function(component, event, helper)
   {
    var titleid = event.getParam("titleid");
    var title = event.getParam("title");
    var maxSeats = event.getParam("maxSeats");
    var seatsInUse = event.getParam("seatsInUse");  
    var item = event.getParam("item"); //This is the item that was moved.
    var allGuestsList = component.get("v.allItems");

    //Searches guest list for matching guest of who got moved.
    var actualGuest = allGuestsList.find(function(moving){return moving.id == item.id;}); //***REALLY INEFFICIENT***

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

поиск в массиве длиной 200 не может быть трудной операцией для любого компьютера, даже очень старого.

find или map или filter или while или for работает быстро,Что может работать медленно - это если вы часто меняете html.оптимизируйте операции DOM, попробуйте вычислить все в памяти и измените html только один раз после того, как все данные рассчитаны и т. д.

, например: множество манипуляций с массивом длиной 100 000 заняло всего 7-8 миллисекунд (0,007 секунды)

var timestart = new Date().getTime()

var arr = Array.from({length: 100000}, Math.random)

var newArr = arr
  .filter(_ => _ < 0.5)
  .map(_ => { return {val: _ * 2}})
  .reverse()
  .join(',')
  .split(',')

var timeend = new Date().getTime()

console.log ('execution time (sec) ' + ((timeend - timestart) / 1000)) // for me 0.007 of sec
0 голосов
/ 03 октября 2018

Вы можете попробовать алгоритм поиска, такой как бинарный поиск. бинарный поиск

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...