Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Перебор массива каждые 3 элемента

#javascript


Приветствую!
Подскажите пожалуйста, как можно перебирать массив каждые 3 элемента. У меня есть
массив var arr = [[1, 2, 3, 4, 5, 6, 7, 8, 9]] Мне нужно через for вывести так: 

Первый: 1, 2, 3.
Второй: 4, 5, 6.
Третий: 7, 8, 9.


Я сделал все через такой перебор:

for( var i = 0; i < 3; i++){
     for( var j = 0; j < 3; j++){
         console.log(arr[i][j]);
     }
 }


и так три раза, увеличивая i и j на 3. Как это можно автоматизировать, что бы не
3 раза выводить for.
Большое всем спасибо за ответы! 
А если у меня есть такой массив: 

arr = [
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 5, 6, 7, 8, 9]
]


И мне необходимо найти первые три индекса каждого значения, что бы получилось так:
[1,2,3,1,2,3,1,2,3],[4,5,6,4,5,6,4,5,6] и тд.
Как это можно сделать? 
Заранее большое спасибо! 
    


Ответы

Ответ 1



Вот как можно это сделать: var arr = [[1, 2, 3, 4, 5, 6, 7, 8, 9], [12, 3, 4, 11, 4, 5, 6, 7]]; var tmp_arr = []; var arr_3 = []; for(var j=0; j

Ответ 2



Насколько я понял, внутренних массивов может быть сколько угодно, поэтому я немного усложнил входной массив. var arr1 = [ [1, 2, 3, 4, 5, 6, 7, [8, [9, 10]]], [11, 12, [13, [14,15]]] ]; function getArray(arr, num) { var result = []; var i = 0; var calculateArr = function(arr) { arr.forEach(function(item) { if (Array.isArray(item)) { calculateArr(item); } else { let reminder = Math.floor(i / num); if (!result[reminder]) { result[reminder] = []; } result[reminder].push(item); i++; } }); } calculateArr(arr); return result; } console.log('arr1 = ' + JSON.stringify(getArray(arr1, 3))); var arr2 = [[1, 2, 3, 4, 5, 6, 7, 8, 9]] console.log('arr2 = ' + JSON.stringify(getArray(arr2, 3))); После обновления вопроса решение приняло следующий вид: var arr = [ [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9] ]; function getNewArr(arr) { let result = []; arr.forEach(function(innerArr) { innerArr.forEach(function(item, i) { let reminder = Math.floor(i / 3); if (!result[reminder]) { result[reminder] = []; } result[reminder].push(item); }); }); return result; } console.log(JSON.stringify(getNewArr(arr)));

Ответ 3



Вот так будет работать на разное кол-во var array = [1, 2, 3, 4, 5, 6, 7, 8]; function breakUp(array){ for (var i = 0; i < array.length; i += 3) { console.log(array.slice(i, i + 3)); } } breakUp(array);

Ответ 4



Если просто вывести данные. var arr = [[1, 2, 3, 4, 5, 6, 7, 8, 9], [11, 12, 13, 14, 15, 16, 17, 18, 19]], length = 3, test = document.getElementById('test'); function display() { arr.forEach(item => { for(var i = 0; i < item.length; i++) { test.insertAdjacentHTML('beforeend', ( !i || i % length ? " ": "
") + item[i]) } test.insertAdjacentHTML('beforeend', "
") }) } display();


Комментариев нет:

Отправить комментарий