39

配列があり["Lorem", "", "ipsum"]ます。この配列から空の文字列を削除して、を取得したいと思います["Lorem", "ipsum"]

ループを使用せずに、各要素をトラバースして削除せずにこれを行う方法はありますか?

4

5 に答える 5

70

あなたは使用することができますfilter

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

MDNには、IE8互換性の回避策があります。他の場所で使用する予定がない場合は、古き良きループを使用することもできます。ループにfilter問題はありません...

于 2013-01-22T07:38:22.317 に答える
13

Javascript 1.6を使用している場合(おそらくIE8以下では動作しません)、次を使用できます

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

例えば。

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

于 2014-01-30T15:55:32.943 に答える
9

もう1つの方法は、jqueryの.map()関数を使用することです。

var newArray = $.map( oldArray, function(v){
  return v === "" ? null : v;
});
于 2013-01-22T07:44:47.363 に答える
8
<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>

両方がテストされます。

于 2013-01-22T07:41:57.227 に答える
0

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]になりました。

于 2014-10-28T14:12:48.703 に答える