Как получить массивы обратно?

131
27 июля 2019, 17:10

Из массива 0 и 1, получаю массив чисел (числа равны количеству 0 и 1).
Не могу понять, как получить обратно массивы 0 и 1?

var arr = [0,0,0,0,1,1,1,0,0,0,0]; 
var countZero = 0; 
var mode = 0; 
var arr1 = []; 
for(var i = 0; i < arr.length; i++) { 
   if (mode === arr[i]) { 
            countZero++ 
   } 
   if(mode != arr[i]) { 
       arr1.push(countZero); 
       countZero = 1; 
       mode = arr[i]; 
       }  
   } 
   arr1.push(countZero); 
   console.log(arr1);

Answer 1

var arr = [0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]; 
var countZero = 0; 
var mode = 0; 
var arr1 = []; 
for (var i = 0; i < arr.length; i++) { 
	if (mode === arr[i]) { 
		countZero++ 
	} 
	if (mode != arr[i]) { 
		arr1.push(countZero); 
		countZero = 1; 
		mode = arr[i]; 
	} 
} 
arr1.push(countZero); 
 
// преобразуем в оригинальный массив 
 
var bits = []; 
 
for (var i = 0, currentBit = 0; i < arr1.length; i++) { 
	for (var count = 0; count < arr1[i]; count++) { 
		bits.push(currentBit); 
	} 
	currentBit = +!currentBit; 
} 
 
console.log(String(arr)); 
console.log(String(arr1)); 
console.log(String(bits));

Answer 2

Вот так можно без особых костылей и лишних циклов сделать все в одну строчку.

let arr = [3, 4, 3]; 
 
newArr = arr.reduce((accumulator, currentValue, index) => accumulator.concat(Array(currentValue).fill(index % 2 ? 1 : 0)), []); 
 
console.log(newArr);

READ ALSO
Не удается удалить элемент с массива в localstorage

Не удается удалить элемент с массива в localstorage

Записываю значения я таким способом:

152
Круговое передвижение по карте

Круговое передвижение по карте

Есть очень большой двумерный массив - игровая картаЕсть маленький двумерный массив - текущая, видимая часть игровой карты

138
Правильный счетчик вопросов

Правильный счетчик вопросов

Имеется несколько input'ов с одинаковым классом Как узнать какой инпут по счету сейчас активен?

131