Подтвердить что ты не робот

Удалить пустую строку из массива строк - JQuery

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

<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>

Без цикла

<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>

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

Ответ 4

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

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

например.

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

Ответ 5

var arr = [a, b, c, e, f, g, h];

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

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