2012-06-03 49 views
1

我有以下JSON:的Javascript分裂陣列同樣

http://pastebin.com/uxpWk2CY

我需要將其分成許多根據瀏覽器的寬度陣列。

這裏是我的javascript:

var imageArray = jQuery.parseJSON(data); 

    var splitArrayInto = jQuery(document).width()/300; 
    splitArrayInto = Math.floor(splitArrayInto); 

    var seperateImageArrays = array_fill(0, splitArrayInto); 

    for(var i = 0; i < splitArrayInto; i++){ 
     seperateImageArrays[i % splitArrayInto][i] = imageArray[i]; 
    } 

當我運行的是,我得到

不能轉換未定義反對

seperateImageArrays [我%splitArrayInto] [i] = imageArray [一世];

任何幫助表示讚賞。編輯: 忘了添加array_fill函數。

//PHP array_fill 
function array_fill (start_index, num, mixed_val) { 
    var key, tmp_arr = {}; 

    if (!isNaN(start_index) && !isNaN(num)) { 
     for (key = 0; key < num; key++) { 
      tmp_arr[(key + start_index)] = mixed_val; 
     } 
    } 

    return tmp_arr; 
} 
+0

你知道嗎,你只需要以長格式編寫'jQuery'一次?通過將代碼封裝在'(function($){....})(jQuery);'中,無論是否使用了noConflict,都可以使用'$'。 – ThiefMaster

+0

我被告知寫jQuery而不是$出於某種原因,我不記得了。 – CharliePrynn

+0

它有道理*一次*所以它甚至可以在沒有使用任何衝突的情況下工作。但是在函數內部,我建議你使用'$'是完全安全的。 – ThiefMaster

回答

2

當你調用array_fill你不傳遞第三個參數,讓你所有的數組元素設置爲undefined ...並undefined不能[i]解除引用。

請考慮將[]作爲第三個參數。

+0

打我吧... –

+0

太好了,那固定了它。非常感謝。 – CharliePrynn

0

由於您使用的是PHPJS的array_fill,您是否考慮過使用array_chunk?這將把你的大數組分成相同大小的數組(除了最後一個,如果數字不能均勻分配,可能會少一些)。