2016-12-31 2 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

'; i dandavis

+0

http://stackoverflow.com/questions/35310865/remove-sub-array-item-in-javascript (дубликат)? – www139

+0

или просто позже выполните 'console.log (external_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);

Смежные вопросы