Как можно сосчитать количество повторений одной цифры в массиве и закинуть это в другой массив
Не могу никак сделать массив с суммой последовательно попадавшихся цифр дан такой массив
[ [0,1,0,1,0],
[0,1,1,0,0],
[0,1,0,0,0],
[0,1,1,0,0],
[0,1,0,1,0]
],
= [[1,1],[2],[1],[2],[1,1]] ,
то есть если единица повторяется больше 1 раза подряд то число растет , а если между ним и другой единицей 0 то пушиться в массив
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Посчитать количество повторений подряд единиц в массиве можно так:
const init = [ [0,1,0,1,0],
[0,1,1,0,0],
[0,1,0,0,0],
[0,1,1,0,0],
[0,1,0,1,0]
];
const result = init.reduce((acc, el) => {
let prev = 0; // Предыдущее значение
let sum = 0; // сумма 1
const res = []; // результат
el.forEach(item => { // Для каждого элемента
if (item) { // Если не 0
sum++; // инкрементируем сумму
} else { // иначе
if (prev) { // Если предыдущее не 0
res.push(sum); // пушим
sum = 0; // сбрасываем сумму
}
}
prev = item; // текущее становится предыдущим
});
if (sum) { // Если вышли из цикла и сумма не 0
res.push(sum) // Пушим
}
acc.push(res); // пушим в результат
return acc; // возвращаем
}, []);
console.log(result);