1. ホーム
  2. javascript

[解決済み] JavaScriptのmap関数がundefinedを返すのはなぜですか?

2022-05-17 03:55:57

質問

私のコード

 var arr = ['a','b',1];
 var results = arr.map(function(item){
                if(typeof item ==='string'){return item;}  
               });

これは次のような結果をもたらします。

["a","b",undefined]

私は undefined を結果配列に入れたくありません。どうすればいいでしょうか?

どのように解決するのですか?

項目が文字列でない場合は、何も返していませんね。その場合、関数が返すのは undefined というように、結果に表示されているものが返されます。

map関数はある値を別の値に対応させるために使われますが、実際には配列にフィルタをかけたいようで、map関数は向いていないようです。

実際に欲しいのは フィルタ 関数です。これは、結果の配列にその項目が含まれるかどうかに基づいて true または false を返す関数を取ります。

var arr = ['a','b',1];
var results = arr.filter(function(item){
    return typeof item ==='string';  
});