Разложить массив спиралью
Всем привет. Подскажите пожалуйста, как подкопаться к такой штуке:
Есть массив. 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, время: 06:05. |