Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 December 06

NN

Nikita Nesterchuk in NodeUA - JavaScript and Node.js in Ukraine
плюс можно с помощью профайлера посмотреть, как части алгоритма много времени занимают
источник

a

andvs in NodeUA - JavaScript and Node.js in Ukraine
После парсинга xml в json я достаю массив объектов вида:
{
       "Сума документів с SLA":555,
       "Вхід у статус":"2021-11-22T12:06:54",
       "Код персональних даних":555,
       "Персональні дані":"Иванов Иван",
       "Телефон":380631111111,
       "Номер документа":555,
       "Статус":"Очікує комплектації",
       "Тип документа":"Рахунок-фактура",
       "Категорія":"Плитка",
       "Торговая марка":"MEGAGRES",
       "Найменування SKU":"ELIS BLANCO P.",
       "Код товару":555,
       "Категорія посередника":"Архітектор",
       "Найменування Посередника":"Петров Петро"
}

После чего нужно вытащить ид  "Код персональних даних" и сделать его ключом в новом объекте, в него вложить объект с ключом "Номер документа". при повторении номера документа все значения делаю массивом, объединяю и пишу в этот новый объект.

Потом нужно просто перебрать все ключи  "Код персональних даних", сравнить с другим таким же по структуре объектом и удалить совпадения. Для этого я со второго объекта беру ключи Object.keys(obj) и при переборе первого ищу вхождения.

Звучит все просто, но при 3000 элементов, ооочень медленно.  Я вот сейчас начал думать что тормоза не в forIn, а в forEach...
источник

А

Арсений in NodeUA - JavaScript and Node.js in Ukraine
3000 элементов это мало, проблема не в forIn и не forEach

Покажите как делаете проверку на дубликаты
источник

А

Арсений in NodeUA - JavaScript and Node.js in Ukraine
Но лучше весь код
источник

VK

Vyacheslav Koval in NodeUA - JavaScript and Node.js in Ukraine
скорее всего сложность O(N^2) - для каждого объекта проверяем другой массив
источник

VK

Vyacheslav Koval in NodeUA - JavaScript and Node.js in Ukraine
нужно второй массив преобразовать в {key: true, ...}
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in NodeUA - JavaScript and Node.js in Ukraine
Банальная проверка - 3к forIn итераций простых операций за доли секунды работает. У вас точно проблема в теле цикла
источник

a

andvs in NodeUA - JavaScript and Node.js in Ukraine
Типа Object.assign({}, arr); и перебирать уже не массив, а объект? Это будет быстрее?
источник

a

andvs in NodeUA - JavaScript and Node.js in Ukraine
Попробую еще разбить на более мелкие задачи. У меня правда уже 8 функций получилось... Ну по другому видимо не найду где проблема... Спасибо.
источник

VK

Vyacheslav Koval in NodeUA - JavaScript and Node.js in Ukraine
const obj = {};
for (const item of arr) {
 obj[item] = true;
}
и дальше проверять obj
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in NodeUA - JavaScript and Node.js in Ukraine
https://youtu.be/wnfZnnrsL1Q
Ну, как минимум, это
источник

a

andvs in NodeUA - JavaScript and Node.js in Ukraine
А это таки мысль!!! Попробую!
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
of Object.values(arr)) {
источник

VK

Vyacheslav Koval in NodeUA - JavaScript and Node.js in Ukraine
уж точно не values)
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
это не принципиально важно, но тот код что я откоментировал - не рабочий
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
потому что for of работает с итерируемыми обьектами
источник

Т

Тёмыч in NodeUA - JavaScript and Node.js in Ukraine
Дожили. Зашёл в фб а там реклама Минина
источник

VL

Vanya Leyn in NodeUA - JavaScript and Node.js in Ukraine
Купи мой курс от джуна до синьора за пол часа и получи грейд тим лида в подарок?
источник

VL

Vanya Leyn in NodeUA - JavaScript and Node.js in Ukraine
Или от синьора до джуна, поправьте как правильно
источник

Ш

Шима in NodeUA - JavaScript and Node.js in Ukraine
ну владилен для новичков норм же . Когда уже придет понимание что надо развиваться то уже ищется мат посеньернее
источник