Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.10.2015, 19:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
не понимаю причём тут чётность
Ну в данном случае, если именно такой массив и по полам вложение, то нужно брать срезы через один.
Ответить с цитированием
  #12 (permalink)  
Старый 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.
Ответить с цитированием
  #13 (permalink)  
Старый 27.10.2015, 20:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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)


Ну естественно, если входной массив с произвольной длиной вложений и срезов которые нужно взять, то вычисляем эти условия.
Ответить с цитированием
  #14 (permalink)  
Старый 27.10.2015, 20:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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 есть пустая строка. И именно только такие файлы, с остальными любыми проблем нет. Почему, так и не удалось выяснить, не имея машины под рукою "лечить" на расстоянии могут только кашпировские и т.п.
Ответить с цитированием
  #15 (permalink)  
Старый 27.10.2015, 21:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

laimas,
может проверку добавить if($('selector').length) ... и да замечал разницу с использованием min.js, до причины не дошёл ... просто ставил несжатую версию

Последний раз редактировалось рони, 27.10.2015 в 21:17.
Ответить с цитированием
  #16 (permalink)  
Старый 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.
Ответить с цитированием
  #17 (permalink)  
Старый 27.10.2015, 21:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
да замечал разницу с использованием min.js
Нет, я не о JQ сжатой говорю, а о моем сценарии - сжатый он работает и на проблемной машине, а вот несжатый ругается на эту строку. Я конечно давал ему и "инструкции" - найди "то-то" и замени "на"... Сначала подумал, что это следствие того, что он где-то допустил при этом ошибку. Сперва просил его показать мне кусочки где изменял, вроде бы нет, затем уже весь файл мне вернуть распакованный с его изменениями - нет ошибок, но работать на проблемной машине с $('selector')[0] ни в какую не хочет, ошибка. Но в сжатом то файле ничего не меняется, все то же - $('selector')[0], вот что интересно. А сам $('selector') до этого действия гарантировано есть.

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

Сообщение от laimas
Ну так какая проблема вложить так как требуется?
если это просто, может покажешь как?
Ответить с цитированием
  #19 (permalink)  
Старый 27.10.2015, 22:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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"]]] в консоли, или не то?
Ответить с цитированием
  #20 (permalink)  
Старый 27.10.2015, 22:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А, есть ошибка, смещение не проверяется, ну это тоже поправимо.
А я сперва даже не обратил внимание на выделенное красным
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите к 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