2013-01-22 2 views
30

У меня есть массив ["Lorem", "", "ipsum"]. Я хотел бы удалить пустую строку из этого массива и получить ["Lorem", "ipsum"].удалить пустую строку из массива строк - JQuery

Есть ли способ сделать это без использования цикла и прохождения через каждый элемент и его удаления?

+0

Когда вы упоминаете «петлю и перемещение», вы действительно имеете в виду традиционные петли для ванильного JavaScript? –

ответ

49

Вы можете использовать filter:

var newArray = oldArray.filter(function(v){return v!==''}); 

The MDN имеет обходной путь для совместимости IE8. Вы можете также использовать хороший старый цикл, если вы не собираетесь использовать filter в другом месте, нет никаких проблем со сквозными ...

+1

цитата «нет проблем с циклом ...», ну, за исключением того, что цикл (не всегда) может быть очень медленным. вы каждый пытались дополнить собственную функцию indexOf() контуром в js-скрипке. Позволяет просто сказать, что indexOf является величиной быстрее. – macguru2000

6
<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript"> 

function cleanArray(actual) 
{ 
    var newArray = new Array(); 
    for(var i = 0; i<actual.length; i++) 
    { 
     if (actual[i]) 
     { 
      newArray.push(actual[i]); 
     } 
    } 
    return newArray; 
} 

$(function() 
{ 
    var old = ["Lorem", "", "ipsum"]; 

    var newArr = cleanArray(old); 

    console.log(newArr) 
}); 
</script>

Без Loop

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript"> 

$(function() 
{ 
    var arr = ["Lorem", "", "ipsum"]; 

    arr = $.grep(arr,function(n){ 
     return(n); 
    }); 

    console.log(arr) 
}); 
</script>

Оба тестируется.

+0

см. Обновленный ответ .. –

7

Другой альтернативой является использование .map() функцию Jquery в:

var newArray = $.map(oldArray, function(v){ 
    return v === "" ? null : v; 
}); 
7

Если вы используете Javascript 1.6 (вероятно, не будет работать на IE8 или меньше), вы можете использовать

arr.filter(Boolean) //filters all non-true values

например.

[1, false, "", undefined, null, "Lorem"].filter(Boolean); // [1, "Lorem"]

0

вар обр = [а, б, в, е, е,, г, ч];

arr = jQuery.grep (arr, function (n) {return (n);});

arr теперь [a, b, c, d, e, f, g];

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