Как убрать дубликаты в массиве с объединением значений? [дубликат]

257
25 июня 2018, 16:30

На данный вопрос уже ответили:

  • JS. Как получить сумму столбцов массивов? 5 ответов
  • Из массива объектов JavaScript сохранить объекты с неповторяющимися значениями [закрыт] 2 ответа

Есть массив в котором каждый элемент тоже является массивом. Например,

["Текст1", 1, 0, 0, 0]
["Текст1", 0, 0, 2, 0]
["Текст2", 1, 0, 0, 0]
["Текст2", 0, 3, 0, 0]
["Текст3", 0, 0, 2, 0]

Как убрать дубликаты, но при этом объединить данные заменяя нули на другие значения у одинаковых значений "Текст" используя JS или JQuery? Чтобы получился массив:

    ["Текст1", 1, 0, 2, 0]
    ["Текст2", 1, 3, 0, 0]
    ["Текст3", 0, 0, 2, 0]
Answer 1

let arr = [ 
  ["Текст1", 1, 0, 0, 0], 
  ["Текст1", 0, 0, 2, 0], 
  ["Текст2", 1, 0, 0, 0], 
  ["Текст2", 0, 3, 0, 0], 
  ["Текст3", 0, 0, 2, 0] 
]; 
let arr2 = []; 
 
let obj = {}; 
 
arr.forEach(function(item) { 
  if (!obj[item[0]]) { 
    obj[item[0]] = item; 
  } else { 
    item.forEach(function(item2, index2) { 
      if (obj[item[0]][index2] === 0) { 
        obj[item[0]][index2] = item2; 
      } 
    }); 
  } 
}); 
 
Object.keys(obj).forEach(function(item) { 
  arr2.push(obj[item]); 
}); 
 
console.log(arr2);

READ ALSO
Почему змейка не работает?

Почему змейка не работает?

Помогите найти проблему змейки

498
Почему iframe загружается 2 раза?

Почему iframe загружается 2 раза?

Нашел скрипт, который останавливает воспроизведение видео в iframe, но он при открытии openbox с самим iframe загружает его два разаБез данного скрипта,...

271
Как сделать привязку к дате? unity3d

Как сделать привязку к дате? unity3d

Кратко опишу приложение: У нас прописано 3 дня, на каждый день даётся свой текст, который нужно выводить

339
Monogame и сокеты

Monogame и сокеты

Делаю сетевую игру на 2 игроковКонструктор класса игры принимает несколько параметров, которые вводятся в аргументах командной строки, один...

255