SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【JavaScript】配列から空文字の要素を削除する

問題

以下の配列から、空文字の要素を削除してください。

var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"]

trash

答え

素直に1つずつ内容を見て、新しい配列に移していく

var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"];
var x = [];
for (var i = 0; i < a.length; ++i) {
    if (a[i] !== "") x.push(a[i]);
}
//alert(x); // -> 123,abc,xyz,987,hoge,fuga
var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"];
var b, x = [];
while ((b = a.shift()) !== undefined) {
    if (b !== "") x.push(b);
}
//alert(x); // -> 123,abc,xyz,987,hoge,fuga

IEだとIE9以降でないとだめだけど、Array.filterを使うと

var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"];
var x = a.filter(function(e){return e !== "";});
//alert(x); // -> 123,abc,xyz,987,hoge,fuga

jQueryがあれば!

var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"];
var x = $.grep(a, function(e){return e !== "";});
//alert(x); // -> 123,abc,xyz,987,hoge,fuga

数字の0やundefinedやfalseなども除去してよければ、

var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga", 0, undefined, false];
var x = $.grep(a, function(e){return e;});
//alert(x); // -> 123,abc,xyz,987,hoge,fuga

関連するメモ

コメント