2016-12-31 58 views
0

我有一個數組outer_array。我嘗試在outer_array之內推送一些數組。但是一些推入的數組是空的。我不想要那些空陣列。我可以手動刪除它,但我需要從循環中刪除它。這裏是我的代碼:從Javascript中的數組中刪除空陣列

var ary = [1, 2, 3, 4, 5, 6]; 
var splitLength = 3; 
var outer_lis = []; 
var first_limit = 0; 
var second_limit = splitLength; 
for (var i=0; i<ary.length; i++) { 
    outer_lis.push(ary.slice(first_limit, second_limit)); 
    first_limit += splitLength; 
    second_limit += splitLength; 
} 
console.log(outer_lis); 

// Result 
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [], [], [], [] ] 

我搜索了一個解決方案,但我在php得到結果。我不明白php。如果你能給我一個這個問題的解決方案,非常感謝。因爲我是Javascript的初學者。

+2

';我 dandavis

+0

http://stackoverflow.com/questions/35310865/remove-sub-array-item-in-javascript(重複)? – www139

+0

或者稍後做'console.log(outer_lis .filter(String));',它跳過空數組 – dandavis

回答

2

感謝dandavis我得到了解決方案。我改變這樣的代碼:

... 
for (var i=0; i < ary.length/splitLength; i++) { 
    outer_lis.push(ary.slice(first_limit, second_limit)); 
    first_limit += splitLength; 
    second_limit += splitLength; 
} 
... 

現在我得到了我所期望的結果。

// Result 
[ [ 1, 2, 3 ], [ 4, 5, 6 ] ] 
1
var arr = [[1,2,3],[],[3,4,5]]; 
var newArr = arr.filter(function(item){ 
    return item.length !== 0; 
}); 
0

試試這個,它會幫助你實現你的結果,而不空數組。在這段代碼中,你也可以改變你的splitLength值。

var ary = [1, 2, 3, 4, 5, 6]; 
 
var splitLength = 3; 
 
var outer_lis = []; 
 
var first_limit = 0; 
 
var second_limit = splitLength; 
 
var looplimit = Math.ceil(ary.length/splitLength); 
 
alert(looplimit); 
 
for (var i = 0; i < looplimit; i++) { 
 
    outer_lis.push(ary.slice(first_limit, second_limit)); 
 
    first_limit += splitLength; 
 
    second_limit += splitLength; 
 
} 
 
console.log(outer_lis);

0

的解決方案是簡單的。下面是代碼

var ary = [1, 2, 3, 4, 5, 6, 4], 
 
     splitLength = 3, 
 
     outer_lis = [], 
 
     first_limit = 0, 
 
     second_limit = splitLength, 
 
     length = ary.length, 
 
     totalSubArrays = Math.ceil(length/splitLength); 
 

 
for (var i = 0; i < totalSubArrays; i++) { 
 
    outer_lis.push(ary.slice(first_limit, second_limit)); 
 
    first_limit += splitLength; 
 
    second_limit += splitLength; 
 
} 
 
console.log(outer_lis);