squadbrodyaga
@squadbrodyaga
帆は風を変えた

Как уменьшить массив в два раза сложив значения?

Предположим есть вот такой массив с рандомными числами:
// Тут 12 случайных чисел
const numbers = [0, 1, 5, 0, 4, 1, 3, 6, 0, 1, 5, 4]

Как уменьшить этот массив в два раза, сложив два соседних числа вместе:
0 + 1 = 1,   5 + 0 = 5,   4 + 1 = 5

// И массив становится таким, где уже 6 чисел:
numbers = [1, 5, 5, 9, 1, 9]
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Делаем просто:

const result = arr.reduce((acc, n, i) => (
  (i & 1) || acc.push(0),
  acc[~-acc.length] += n,
  acc
), []);

Делаем сложно:

function chunked(data, chunkSize) {
  return Array.prototype.reduce.call(
    data,
    (acc, n, i) => ((acc[i / chunkSize | 0] ??= []).push(n), acc),
    []
  );
}

function sum(data, val = n => n) {
  const getVal = val instanceof Function ? val : n => n[val];
  return Array.prototype.reduce.call(
    data,
    (acc, n) => acc + getVal(n),
    0
  );
}


const result = chunked(arr, 2).map(n => sum(n));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 23:03
1 руб./за проект
23 нояб. 2024, в 22:38
2500 руб./за проект
23 нояб. 2024, в 22:03
3000 руб./за проект