Уменьшить элементы во вложенном массиве

Я пытаюсь отфильтровать массив и уменьшить значения, но не знаю, как это сделать.

Итак, у меня есть пример массива [["Hampton Tricep Rope", 3],["Chrome Curl" Bar,8],["Hampton Tricep Rope", 6]]

Как создать функцию с возвратом [["Hampton Tricep Rope", 9],["Chrome Curl" Bar,8]]?

Есть ли у вас какие-либо идеи?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
66
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать Array.prototype.reduce() для возврата объекта, который содержит каждое уникальное имя и его значение.

Наконец, используйте Object.entries(), чтобы получить массив с key и value из этого объекта.

const arr = [["Hampton Tricep Rope", 3],["Chrome Curl Bar", 8],["Hampton Tricep Rope", 6]];

const res = Object.entries(arr.reduce((acc, [name, value]) => {
 if (!acc[name]) {
   acc[name] = value;
 } else {
   acc[name] += value; 
 }
 
 return acc;
}, {}))

console.info(res);

Object.entries

Вы можете использовать сокращение и findIndex

const list = [
  ["Hampton Tricep Rope", 3],
  ["Chrome Curl Bar", 8],
  ["Hampton Tricep Rope", 6]
].reduce((acc, x) => {
  const index = acc.findIndex(y => y[0] === x[0]);
  if (index >= 0) {
    acc[index][1] += x[1];
    return acc;
  }
  acc.push(x);
  return acc;
}, [])

console.info(list)
var result = [];
[["Hampton Tricep Rope", 3],["Chrome Curl Bar",8],["Hampton Tricep Rope", 6]].reduce(function(res, value) {
  if (!result.filter((item) => (item[0] === value[0])).length) {
    result.push([value[0], value[1]]);
  } else {
    result.filter((item) => (item[0] === value[0]))[0][1] += value[1];
  }
  return res;
}, {});

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

Другие вопросы по теме