Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.05.2019, 06:51
Интересующийся
Отправить личное сообщение для galiog Посмотреть профиль Найти все сообщения от galiog
 
Регистрация: 28.04.2016
Сообщений: 17

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


Подскажите, с какого конца зайти для решения этой задачки пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 15.05.2019, 07:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,772

Сообщение от galiog
с какого конца зайти для решения этой задачки
Предложу такой вариант...

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);
Ответить с цитированием
  #3 (permalink)  
Старый 15.05.2019, 10:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,773

массив спиралью
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)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление объекта в массив в цикле Dark19 Элементы интерфейса 3 11.12.2016 22:11
Пустой массив при сохранении в localStorage kichkun Общие вопросы Javascript 3 19.11.2016 13:33
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
как разложить массив при выводе в селект imediasun1 Элементы интерфейса 11 09.03.2014 15:51
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 18:14