Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с массивами в js (https://javascript.ru/forum/misc/78442-pomogite-s-massivami-v-js.html)

рони 15.09.2019 23:21

xcube,
может так чуть быстрее будет.
const datas = [{name : 1, price : 100} , {name : 2, price : 45}, {name : 3, price : 400}],
      datab = [{name : 1, price : 5} , {name : 2, price  : 33}],
      obj = datas.reduce((obj, {name, price}) => (obj[name] = price, obj), {}),
      dataz = datab.map(v => {
      const {name} = v ;
      v.цена = obj[name] ;
      return v
      });


console.log(dataz)

xcube 15.09.2019 23:48

рони,
Ооо всё работает!
Остался последний шажок - если в dataz "price" больше "цены" - вывести клиенту инфу об объекте.
Решается перебором объектов в ячейках массива?
Помогите, пожалуйста.

рони 16.09.2019 00:00

xcube,
const datas = [{name : 1, price : 100} , {name : 2, price : 45}, {name : 3, price : 400}],
      datab = [{name : 1, price : 5} , {name : 2, price  : 330}],
      obj = datas.reduce((obj, {name, price}) => (obj[name] = price, obj), {}),
      arr = [],
      dataz = datab.map(v => {
      const {name} = v ;
      v.цена = obj[name];
      if (v.price > v.цена)  arr.push(v);
      return v
      });


console.log(arr, dataz)

xcube 16.09.2019 00:19

рони,
20 минут сижу думаю, не могу найти.
Где то что то не то, скрипт вывел 8 объектов (из 60 совпадений по cName) и у всех "price" меньше "цены"

рони 16.09.2019 00:40

xcube,
if (+v.price > +v.цена)  arr.push(v);
попробуйте так

xcube 16.09.2019 00:59

рони,
Работает! Всё отлично. Большое спасибо за помощь! :victory: :dance:

xcube 16.09.2019 02:13

Быть может есть способ ускорить и упростить? Один цикл 500+ объектов секунд 60 обрабатывает :-E
А после 2-3 циклов и вовсе перестает реагировать..

Alexandroppolus 16.09.2019 10:46

Цитата:

Сообщение от xcube
Один цикл 500+ объектов секунд 60 обрабатывает

мы, наверно, что-то не знаем? 500 объектов даже с предыдущим вариантом рони (где вложенный цикл) должны за полсекунды пролетать, не более

xcube 16.09.2019 22:58

Alexandroppolus,
Браузер зависает на секунд 10 именно в момент перебора.


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