27.10.2015, 19:21
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
не понимаю причём тут чётность
|
Ну в данном случае, если именно такой массив и по полам вложение, то нужно брать срезы через один.
|
|
27.10.2015, 19:35
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
laimas,
не очень понимаю как очень просто брать эти срезы
вариант решения
function matrix(c, d) {
for (var g = [], a = 0; a < d * d; a += c) {
for (var f = [], e = [], b = 0; b < c; b++) e.push(a + b + 1);
f.push(e);
for (b = 0; b < c - 1; b++) e = e.map(function(a) {
return a + d
}), f.push(e);
g.push(f);
!a || (a + c) % d || (a += d * (c - 1))
}
return g
};
alert(JSON.stringify(matrix(2,4)))// матрицу 4 на 4 разбить 2 на 2
alert(JSON.stringify(matrix(3,9)))//этоn же вариант и для матрицы 9 на 9 на 3 на 3 ... matrix(3,9)
Последний раз редактировалось рони, 27.10.2015 в 20:50.
|
|
27.10.2015, 20:06
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
var a = [
['01', '02', '03', '04'],
['05', '06', '07', '08'],
['09', '10', '11', '12'],
['13', '14', '15', '16']
], b = [], i, s = 2;
for(i=0; i<a.length/2; i++) {
b.push(a[i].slice(0, s), a[i+1].slice(0, s));
b.push(a[i].slice(s), a[i+1].slice(s))
}
console.log(b)
Ну естественно, если входной массив с произвольной длиной вложений и срезов которые нужно взять, то вычисляем эти условия.
|
|
27.10.2015, 20:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Кстати, рони, а то так и забуду. Интересная вещь совсем недавно приключилась с этим: $('selector')[0].
У заказчика несколько машин, одни работают под XP SP3, есть и семерки и одна под win 8.1.
Возникла проблема - на одной из машин работающей под XP SP3 не загружаются файлы MS Office. Перед загрузкой клиент проверяет файл на разрешенный к загрузке тип (чисто сервис, дабы файлы). В реальности вывод ошибок сервера заблокирован и разрешен только в режиме отладки. JS-сценарий сжат.
Спрашиваю, что в этом случае выдает браузер? Ответ - Ошибка. Зная что такого сообщения нет в коде, уточняю, что за ошибка. Ответ - Не разрешенный для загрузки тип файла. Это ближе к телу.
И это только на одной машине происходит. Гадания и предположения, да еще на большие расстояния пользы не принесли, поэтому отдаю ему неупакованный JS со вставленными в предполагаемых проблемных местах вставках простых, чтобы он мне мог сообщать их, а я знал по ним узкое место.
Вот тут и началось самое смешное - теперь браузер (любой) точно выдавал ошибку на строку в который и было получение DOM - $('selector')[0], не завершенный литерал, и хоть умри. А вот $('selector').get(0) без проблем. Но тогда почему это работает в сжатом JS!?
После удалось узнать, что причиной является то, что JS на этой машине типы файлов MS Office получить не может, то есть files[n].type есть пустая строка. И именно только такие файлы, с остальными любыми проблем нет. Почему, так и не удалось выяснить, не имея машины под рукою "лечить" на расстоянии могут только кашпировские и т.п.
|
|
27.10.2015, 21:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
laimas,
может проверку добавить if($('selector').length) ... и да замечал разницу с использованием min.js, до причины не дошёл ... просто ставил несжатую версию
Последний раз редактировалось рони, 27.10.2015 в 21:17.
|
|
27.10.2015, 21:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
laimas,
вот что выдал лог
[["01", "02"], ["05", "06"], ["03", "04"], ["07", "08"], ["05", "06"], ["09", "10"], ["07", "08"], ["11", "12"]]
вроде нужно так:
[[[1, 2], [5, 6]], [[3, 4], [7, 8]], [[9, 10], [13, 14]], [[11, 12], [15, 16]]]
Последний раз редактировалось рони, 27.10.2015 в 21:14.
|
|
27.10.2015, 21:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
да замечал разницу с использованием min.js
|
Нет, я не о JQ сжатой говорю, а о моем сценарии - сжатый он работает и на проблемной машине, а вот несжатый ругается на эту строку. Я конечно давал ему и "инструкции" - найди "то-то" и замени "на"... Сначала подумал, что это следствие того, что он где-то допустил при этом ошибку. Сперва просил его показать мне кусочки где изменял, вроде бы нет, затем уже весь файл мне вернуть распакованный с его изменениями - нет ошибок, но работать на проблемной машине с $('selector')[0] ни в какую не хочет, ошибка. Но в сжатом то файле ничего не меняется, все то же - $('selector')[0], вот что интересно. А сам $('selector') до этого действия гарантировано есть.
Сообщение от рони
|
вот что выдал лог
|
Ну так какая проблема вложить так как требуется? Я писал не для того чтобы как надо, а на вопрос как получить срезы
|
|
27.10.2015, 22:07
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Сообщение от laimas
|
Ну так какая проблема вложить так как требуется?
|
если это просто, может покажешь как?
|
|
27.10.2015, 22:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
если это просто, может покажешь как?
|
b.push([a[i].slice(0, s), a[i+1].slice(0, s)], [a[i].slice(s), a[i+1].slice(s)])
//[[["01", "02"], ["05", "06"]], [["03", "04"], ["07", "08"]], [["05", "06"], ["09", "10"]], [["07", "08"], ["11", "12"]]] в консоли, или не то?
|
|
27.10.2015, 22:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А, есть ошибка, смещение не проверяется, ну это тоже поправимо.
А я сперва даже не обратил внимание на выделенное красным
|
|
|
|