#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();
Комментариев нет:
Отправить комментарий