Я ищу высокопроизводительный способ нулевого заполнения значений, которые являются взаимоисключающими между двумя массивами. Эти данные предназначены для диаграммы JS, которые должны иметь записи для каждого значения x. Примером может объяснить это лучше:Javascript: заполнить пробелы между массивами
До:
obj1 = [{x:1, y:1}, {x:3, y:2}];
obj2 = [{x:2, y:2}, {x:4, y:4}];
После:
obj1 = [{x:1, y:1}, {x: 2, y:0}, {x:3, y:2}, {x:4, y:0}];
obj2 = [{x:1, y:0}, {x: 2, y:2}, {x:3, y:0}, {x:4, y:4}];
Я использовал вложенные для петель, чтобы сделать это сам, но так как количество объектов & записей увеличивается, стенки время становится неприемлемо высоким. В наборе данных, который закончился нулевым заполнением до нескольких тысяч записей, время стены составляло более 10 секунд.
Я рассмотрел некоторые библиотеки JS, такие как jQuery и подчеркивание, но неясно, что для этого они выполняют более эффективные функции.
Обновление: Спасибо за все ответы. Я попробую их и помету лучший вариант в качестве ответа. Замечание о значениях x: они не обязательно монотонно возрастают (obj1 & 2 может пропустить значение x до тех пор, пока они оба). Ось X не обязательно является числом, это также могут быть даты. Надеюсь, один или несколько ответов будут адаптированы к этому.
Этот подход сократил время заполнения нуля с 5 секунд до миллисекунд в этом наборе тестовых данных и процессоре.Я создал словарь всех x-значений из каждого массива (слоя данных). Я также создал временные словари для каждого слоя данных, чтобы ускорить поиск (избегает итерации через массив или с помощью indexOf). Поиск очень быстрый: для (запись var в all_x_vals) {if (typeof tmp_dict [entry] == 'undefined') ZeroFillArrayEntry(); } ----- Не точный код, но, надеюсь, попадает в точку – pmont