Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2019, 20:10
Интересующийся
Отправить личное сообщение для xcube Посмотреть профиль Найти все сообщения от xcube
 
Регистрация: 15.09.2019
Сообщений: 15

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

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

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

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

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

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

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

Последний раз редактировалось xcube, 15.09.2019 в 20:17.
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2019, 20:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

xcube,
уточните структуру массивов!
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2019, 20:39
Интересующийся
Отправить личное сообщение для xcube Посмотреть профиль Найти все сообщения от xcube
 
Регистрация: 15.09.2019
Сообщений: 15

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

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

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

Object { name: "Кристал", price: "3" }
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2019, 20:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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)
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2019, 21:23
Интересующийся
Отправить личное сообщение для xcube Посмотреть профиль Найти все сообщения от xcube
 
Регистрация: 15.09.2019
Сообщений: 15

рони,

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

Уточню: данный скрипт для 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 объектами. Может ошибся где?

Последний раз редактировалось xcube, 15.09.2019 в 21:33.
Ответить с цитированием
  #6 (permalink)  
Старый 15.09.2019, 21:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от xcube
а с моими массивами, почему то, нет(
скорее всего у вас иная структура второго массива, чем у первого.
сделайте массивы для примера.
Ответить с цитированием
  #7 (permalink)  
Старый 15.09.2019, 21:42
Интересующийся
Отправить личное сообщение для xcube Посмотреть профиль Найти все сообщения от xcube
 
Регистрация: 15.09.2019
Сообщений: 15

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

С вашими примерами массива всё работает.
Быть может я могу как то посмотреть структуру своих массивов?
Ответить с цитированием
  #8 (permalink)  
Старый 15.09.2019, 21:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от xcube
Быть может я могу как то посмотреть структуру своих массивов?
Сообщение от xcube
window.console.log(data);

вы же смотрите.
Ответить с цитированием
  #9 (permalink)  
Старый 15.09.2019, 21:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

xcube,
может нет price2 во втором массиве.
что мешает написать, что на входе двух массивов и что хотите получить?
Ответить с цитированием
  #10 (permalink)  
Старый 15.09.2019, 21:49
Интересующийся
Отправить личное сообщение для xcube Посмотреть профиль Найти все сообщения от xcube
 
Регистрация: 15.09.2019
Сообщений: 15

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возникла проблема с анимацией кнопки после внедрения js кода! Помогите пожалуйста. DobrovolskyDen (X)HTML/CSS 0 08.05.2018 21:48
Помогите разобратся(работа с массивами JS)! Avanesyan Общие вопросы Javascript 2 15.01.2018 21:31
Помогите вынести js в отдельный скрипт pozitiv4ek Events/DOM/Window 9 15.01.2018 10:48
Помогите расшифровать JS pavdin Общие вопросы Javascript 24 01.04.2017 20:37
Помогите решить задачу с массивами! KaTaJLonec Общие вопросы Javascript 4 02.02.2015 00:25