Разложить массив спиралью
Всем привет. Подскажите пожалуйста, как подкопаться к такой штуке:
Есть массив. let array = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; Надо вывести его значения на экран в ряд, начиная из центра по спирали: влево - вниз - вправо - вверх и т.д. Т.е. должно получиться 5,4,7,8,9,6,3,2,1, Я начал пробегаться по нему, формировать один обычный массив, но понимаю что это привело меня не туда куда надо... let array = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; let newArray = []; for(let i = 0; i < array.length; i++){ for(let j=0; j<array[i].length; j++){ newArray.push(array[i][j]); } } console.log(newArray); Подскажите, с какого конца зайти для решения этой задачки пожалуйста. |
Цитата:
var arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; var i=1; var j=1; var dj=-1; var a=[]; for (var k=0; k<9; k++) { a[a.length]=arr[i][j]; j=j+dj; if (j<0) { j=0 dj=1; i++; }; if (j==3) { j--; i--; if (i<0) { i=0; j--; dj=-1; }; }; } alert(a); |
массив спиралью
galiog,
let array = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ], [a, b, i, j, l] = [0, 1, 0, 0, 9], arr = []; for (let k = 0; k < l; k++) { let v = array[i] && array[i][j]; if (v && !arr.includes(v)) { arr.unshift(v); } else { k--; i -= a; j -= b; [a, b] = a ? [b, -a] : [b, a] }; i += a; j += b; } console.log(arr) alert(arr) |
Часовой пояс GMT +3, время: 16:38. |