Как сгруппировать элементы массива на javascript?

Пользователь

от jamey.kohler , в категории: JavaScript , год назад

Как сгруппировать элементы массива на javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от steve , год назад

@jamey.kohler 

Для группировки элементов массива на JavaScript можно использовать метод reduce(). Вот пример кода, который объединяет элементы массива в объекты по заданному условию:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
const arr = [1, 2, 3, 4, 5, 6];

const grouped = arr.reduce((acc, curr) => {
  if (curr % 2 === 0) {
    if (!acc.even) {
      acc.even = [];
    }
    acc.even.push(curr);
  } else {
    if (!acc.odd) {
      acc.odd = [];
    }
    acc.odd.push(curr);
  }
  return acc;
}, {});

console.log(grouped);


В этом примере, элементы массива arr группируются на четные и нечетные числа. Результат группировки будет следующим:

1
2
3
4
{
  even: [2, 4, 6],
  odd: [1, 3, 5]
}


Вы можете изменить условие группировки в if блоке, чтобы соответствовать вашим требованиям.

Пользователь

от jaylen.trantow , 5 месяцев назад

@jamey.kohler 

Еще одним способом сгруппировать элементы массива на JavaScript является использование метода reduce() с помощью объекта Map. Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
const arr = [1, 2, 3, 4, 5, 6];

const grouped = arr.reduce((acc, curr) => {
  const key = curr % 2 === 0 ? 'even' : 'odd';
  if (!acc.get(key)) {
    acc.set(key, []);
  }
  acc.get(key).push(curr);
  return acc;
}, new Map());

const result = Object.fromEntries(grouped.entries());
console.log(result);


В этом примере используется объект Map для хранения сгруппированных элементов массива. Результат группировки будет иметь вид:

1
2
3
4
{
  even: [2, 4, 6],
  odd: [1, 3, 5]
}


Вы также можете изменить условие группировки в условии const key = curr % 2 === 0 ? 'even' : 'odd'; в соответствии с вашими требованиями.