2013-05-14 2 views
2

Это может показаться очень простым запросом. Но моя голова слишком размыта, чтобы понять правильный способ сделать это.Создать массив страниц

У меня есть многомерный массив ключевых слов. Они разбиваются на столбцы. Я планирую ограничить их только двумя появляющимися в столбце за раз. Всего 5 столбцов, каждый из которых состоит из 2 ключевых слов. Это то, что состоит из «страницы».

То, что у меня ниже, неверно. Внутренний for, где я пытаюсь назначить страницу, неверен. Внешний for делает точно что мне нужно (ограничивает данные только двумя словами/столбцом).

for (i; i < keywordData.length; i++) { 
    nkeywordData[i] = keywordData[i].splice(start,limit); 
    for (var k=0; k < nkeywordData.length; k++){ 
     pages[k] = nkeywordData; 
    } 
} 

Образец данных:

$rootScope.keywordData = [ 
    ["column1","test1","test1","tea","party", "water bottle"], 
    ["column2","test2","test2","test2 test2"], 
    ["column3","test3","t3","longer test3 "], 
    ["column4","test4","testing4 tesf asdfsdf"], 
    ["column8","test5","test5 asdfsdfasdfasdfasa asda asdfsas"] 
]; 

У меня есть другие функции в месте, которые обрабатывают положить вещи в колонны и т.д. Просто не может получить страницы на работу.

Ожидаемый результат: 3 страницы, последняя страница будет иметь только party, water bottle в массиве, так как она самая длинная. Другие массивы будут пустыми.

Это будет первая «страница». Затем, когда я нажимаю «показывать больше», следующая «страница» будет добавлена ​​ниже.

keygenshowmore

+0

Если страница содержит только один столбец или быть многомерными? – sh0ber

+0

Страница будет многомерной, я предполагаю. При индексе 0 мы находим первые 2 "строки" данных по 5 столбцам. Я добавил скриншот, чтобы помочь визуализировать, как выглядят вещи. – EnigmaRM

ответ

0

Это даст вам массив pages, как вы описали. Дайте мне знать, если я что-то пропустил.

var idxPage; 
for (var i=0; i < keywordData.length; i++) { 
    column = keywordData[i]; 
    for(var k=0; k < column.length; k++){ 
     idxPage = Math.floor(k/limit); 
     if (!pages[idxPage]){ 
      pages[idxPage] = []; 
     } 
     if (!pages[idxPage][i]){ 
      pages[idxPage][i] = []; 
     } 
     pages[idxPage][i].push(column[k]); 
    } 
} 

alert(pages[0][0]); // ["column1", "test1"] 
alert(pages[0][1]); // ["column2", "test2"] 
alert(pages[1][0]); // ["test1", "tea"] 
alert(pages[1][1]); // ["test2", "test2 test2"] 
alert(pages[2][0]); // ["party", "water bottle"] 
alert(pages[2][1]); // undefined 

Вот fiddle

+0

Логика, кажется, отключена. Ожидаемые результаты 'column1, test' на самом деле возвращают' test1, tea' – EnigmaRM

+0

Вы проверили скрипку, как указано здесь. Я добавлю предупреждения. – sh0ber

+0

Ahhh. Я понимаю, почему он пропускает первую «строку» ... Потому что я тестировал ее после моего исходного цикла 'for', который объединяет данные из' keywordData'. Таким образом, проблема была вызвана самим собой (поскольку большинство моих проблем есть!) – EnigmaRM