• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascript map filter)

JavaScriptのmapとfilterを使った要素の抽出について

このQ&Aのポイント
  • JavaScriptのmapとfilterを使用して、配列の要素を変換し、条件に合致する要素を抽出することができます。
  • 具体的には、map関数を使用して配列の各要素の文字数を取得し、filter関数を使用して偶数の文字数を持つ要素を抽出しています。
  • 上記のコードの結果は[4, 4]となります。

質問者が選んだベストアンサー

  • ベストアンサー
  • cero_d
  • ベストアンサー率87% (14/16)
回答No.1

>私が思うに、 >map(function(e){return e.length;}) >で要素のそれぞれのindex値、[0,1,2,3,4]に変換、 e.lengthでその値が返ってきましたか? 'a'.length、'b'.length...と処理を行っているので [1,1,1,1,1] こうなると思いますよ? map(function(e){alert(e.length);return e.length;}); alert入れて確認してみては? >filter(function(e){return e%2==0;}) >で変換したものの中から2で割ってあまりが無いものを抽出し、 >[2,4] >が出力されると思うのですが、違うようです。 したがって、[]になると思います。 aaa.map(function(e,i){return i;}).filter(function(e){return e%2==0;}); こうすればindex値を持つiを返すので、結果として[0,2,4]が返ってきますが・・・。

komado45oji4768
質問者

お礼

お返事ありがとうございます。 解決しました。 結論から言うとlengthの処理を間違えていました。 配列の要素の文字数を返すのですね・・。 勘違いして配列を最初から0,1,2,3・・・と順に返すものだと思っていました。 これが全ての原因でした。 そもそもこのソースはコピペしたものではなく(コピペはまずいかなと思ったので)ソースの数などを変えておりました。 mapを上記のように解釈していたので、配列の中身はいじっても結果に支障は無いだろうと変更しましたところこういう結果に・・。 出力される[4,4]というのはその元のソースのものです。 mapの処理がわかった今改めて見ると、これが正しいことが分かりました。 cero_dさんの言うとおり、私が提示したものは[1,1,1,1,1]ですね。 ひとつ学びました。 なんだか阿呆らしいことでお騒がせしましてすいませんでした。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

mapとfilterについてはすでに書かれているので割愛します。 >このコードの結果は[4,4]と出力されるそうなのですが、 その説明をされている方が間違っている可能性もふまえて、 ・サンプルコードはそれで正しいのか、 ・実行して、[4,4]になったのか、 改めて確認し直してみてください。 ----------- >で変換したものの中から2で割ってあまりが無いものを抽出し、 >[2,4] >が出力されると思うのですが、違うようです。 0を2で割っても0ですので、 [0,1,2,3,4] に対して処理を行った期待値は [0,2,4] です。

komado45oji4768
質問者

お礼

お返事ありがとうございます。 解決しました。 結論から言うとlengthの処理を間違えていました。 配列の要素の文字数を返すのですね・・。 勘違いして配列を最初から0,1,2,3・・・と順に返すものだと思っていました。 これが全ての原因でした。 そもそもこのソースはコピペしたものではなく(コピペはまずいかなと思ったので)ソースの数などを変えておりました。 mapを上記のように解釈していたので、配列の中身はいじっても結果に支障は無いだろうと変更しましたところこういう結果に・・。 出力される[4,4]というのはその元のソースのものです。 mapの処理がわかった今改めて見ると、これが正しいことが分かりました。 cero_dさんの言うとおり、私が提示したものは[1,1,1,1,1]ですね。 ひとつ学びました。 なんだか阿呆らしいことでお騒がせしましてすいませんでした。

すると、全ての回答が全文表示されます。

関連するQ&A