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

xcube 15.09.2019 20:10

Помогите с массивами в js
 
Всем привет!

Имеется 2 массива с объектами типа:

datas = [{name, price}] , [{name, price}];
datab = [{name, price2}] , [{name, price2}];

Извиняюсь за возможный кривой синтаксис - я новичок.
Нужно сравнить их, дедуплировать и соединить, что бы на выходе получилось:

dataz = [{name, price, price2}] , [{name, price, price2}]

name - совпадают, price - разные, но нужно их объединить.

Надеюсь попадаю под нужную категорию форума, но, за хороший ответ готов вознаградить.

рони 15.09.2019 20:29

xcube,
уточните структуру массивов!

xcube 15.09.2019 20:39

Наверное, я начудил, в консоли пишет так:

Array [ Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, ещё 39… ]

Если в лог вывести obj, то:

Object { name: "Кристал", price: "3" }

рони 15.09.2019 20:41

xcube,
const datas = [{name : 1, price : 100} , {name : 2, price : 45}],
      datab = [{name : 1, price2 : 5} , {name : 2, price2  : 33}],
      dataz = Array.from(datas, (v, i) => ({...v, ...datab[i]}));
console.log(dataz)

xcube 15.09.2019 21:23

рони,

Отдельно скрипт работает, а с моими массивами, почему то, нет(

Уточню: данный скрипт для imacros firefox.

const data = [];

var buy = window.document.querySelectorAll(".table-sell td[data-label='Вещь']");

for (var i = 0; i < buy.length; i++) {

var cName = buy[i].innerHTML.replace(/\s+/g, '');
var cPrice = buy[i].closest('tr').querySelector(".price").innerHTML.r eplace(/\s+/g, '');

var obj = {
name: cName, price: cPrice
}

data.push(obj);
}

window.console.log(data);

Так я заполнил массив data объектами. Может ошибся где?

рони 15.09.2019 21:35

Цитата:

Сообщение от xcube
а с моими массивами, почему то, нет(

скорее всего у вас иная структура второго массива, чем у первого.
сделайте массивы для примера.

xcube 15.09.2019 21:42

рони,
Второй массив точно так же заполняется, как и первый. На сайте 2 одинаковые таблицы, парсятся по очереди.

С вашими примерами массива всё работает.
Быть может я могу как то посмотреть структуру своих массивов?

рони 15.09.2019 21:45

Цитата:

Сообщение от xcube
Быть может я могу как то посмотреть структуру своих массивов?

Цитата:

Сообщение от xcube
window.console.log(data);

:-?
вы же смотрите.

рони 15.09.2019 21:47

xcube,
может нет price2 во втором массиве.
что мешает написать, что на входе двух массивов и что хотите получить?

xcube 15.09.2019 21:49

http://images.vfl.ru/ii/1568573337/0...c/27874800.png

Первые 2 массива - мои. Третий создался вашим решением.


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