Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2015, 16:53
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

перебор массива с отступом
Добрый день,
Кто-нибудь знает как называется алгоритм который перебирает точки массива (матрицы) с отступом или по кругу не знаю как точно описать. Пример:

МАССИВ
[01, 02, 03, 04]
[05, 06, 07, 08]
[09, 10, 11, 12]
[13, 14, 15, 16]

На выходе перебора с шагом 1 (4 массива 2х2):
#1        |   #2
[01, 02]  |  [03, 04]
[05, 06]  |  [07, 08]
----------+-----------
#3        |   #4
[09, 10]  |  [11, 12]
[13, 14]  |  [15, 16]


На выходе перебора с шагом 2 (1 массив 2х2):
#1       

[01, 03]
[09, 11]


На выходе перебора с шагом 3 (1 массив 2х2):
#1       

[01, 04]
[13, 16]



P.S. - обернул в [html] что бы не потерять отступы... не обращайте на это внимание
P.P.S. - Для тех кто не знает как читать многомерные массивы добавил рамки

Последний раз редактировалось Brook, 29.10.2015 в 09:29.
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2015, 17:23
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

так сделать сам я сдела но может что знает вариант получше а то этот какой то деревянный

var arr = [[1,2,3,4],
           [5,6,7,8],
           [9,10,11,12],
           [13,14,15,16]
           ],
    step = 1;
for(i=0; i < 4; i=i+step*2) {
	for(j=0; j < 4; j=j+step*2) {
    	var dot1 = arr[i][j],
            dot2 = arr[i][j+step],
            dot3 = arr[i+step][j],
            dot4 = arr[i+step][j+step];
        alert("Section" + (i+j) + ": [" + dot1 + ", " + dot2 + ", " + dot3 + ", " + dot4 + "]");
	}
}

Последний раз редактировалось Brook, 27.10.2015 в 18:44.
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2015, 17:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

array.slice()
Ответить с цитированием
  #4 (permalink)  
Старый 27.10.2015, 17:25
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

laimas,
и как это поможет с двумерным массивом?!
а если шаг будет не еденица а 3 тогда как?!
Ответить с цитированием
  #5 (permalink)  
Старый 27.10.2015, 17:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Какая разница какой он у вас, вам же нужно получать срезы массива, что и делает slice(), указывайте необходимую длину, получайте, выводите, и также в цикле.

На php можно было бы и короче, одной функций можно разбить массив на массивы по N элементов сразу.
Ответить с цитированием
  #6 (permalink)  
Старый 27.10.2015, 17:33
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

не не мне нужны только крайние точки а не срезы... в этом то и вся разница
то есть если следовать примеру из Топика то если установить шаг 3, тогда вернется массив:
[
 [1,4]
 [13,16]
]

конечно можно получить крайние точки но что делать с точками ниже?... хммм ну в общем да можно использовать слайс.. ок = спасибо ... но всеже это не совсем то

Последний раз редактировалось Brook, 27.10.2015 в 17:39.
Ответить с цитированием
  #7 (permalink)  
Старый 27.10.2015, 17:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Brook
но всеже это не совсем то
Оригинально:

[01, 02, 03, 04]
...

На выходе перебора (4 массива 2х2): показать чистый исходник в новом окне Скрыть/показать номера строк печать кода с сохранением подсветки

#1 #2
[01, 02] [03, 04]
....

Что здесь тогда крайнее? )
Ответить с цитированием
  #8 (permalink)  
Старый 27.10.2015, 18:30
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

Цитата:
(4 массива 2х2)
массив №1 [[01,02][05,06]]
массив №2 [[03,04][07,08]]
массив №3 [[09,10][13,14]]
массив №4 [[11,12][15,16]]

Надеюсь тперь понятнее )
Ответить с цитированием
  #9 (permalink)  
Старый 27.10.2015, 18:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Изначально так и надо было написать. Ну и в чем проблема - зная вложения массива, получать по их индексам их срезы, четные и нечетные?
Ответить с цитированием
  #10 (permalink)  
Старый 27.10.2015, 18:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от laimas
Ну и в чем проблема - зная вложения массива, получать по их индексам их срезы, четные и нечетные?
было бы интересно вглянуть, пока не понимаю причём тут чётность ...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Перебор массива кнопкой Giyas Элементы интерфейса 14 28.01.2015 23:00
Сортировка массива по возрастанию другого массива. vas88811 Events/DOM/Window 4 12.01.2014 10:31
Перебор массива - вложенный цикл SWin Общие вопросы Javascript 35 27.12.2013 05:06
Перебор массива объектов Триви jQuery 12 26.08.2011 09:22