2016-12-31 33 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);