回答編集履歴
1
テキスト修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
こんにちは
|
2
2
|
|
3
|
-
何が問題かというと、ご質問にあるようなことをやろうとしたときに、配列に用意されている様々なメソッドの中で [map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map) を選んでしまった点かなと思います。map は、元の配列の各要素に何らかの処理をした結果、得られた値を各要素とする配列を得るメソッドです。したがって、map によって得られる配列の長さは、元の配列の長さと同じになります。map に与える関数が明示的なreturnで値を返さない場合、ご質問のコードでいうと `if(x[name] != ''){` の `if`条件が満たされなかった場合においても、出力の配列に何も追加されない**のではなく**、関数が明示的なreturnで終了しなかった場合の返り値としての
|
3
|
+
何が問題かというと、ご質問にあるようなことをやろうとしたときに、配列に用意されている様々なメソッドの中で [map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map) を選んでしまった点かなと思います。map は、元の配列の各要素に何らかの処理をした結果、得られた値を各要素とする配列を得るメソッドです。したがって、map によって得られる配列の長さは、元の配列の長さと同じになります。map に与える関数が明示的なreturnで値を返さない場合、ご質問のコードでいうと `if(x[name] != ''){` の `if`条件が満たされなかった場合においても、出力の配列に何も追加されない**のではなく**、関数が明示的なreturnで終了しなかった場合の返り値としての **undefined が追加されます**。
|
4
4
|
|
5
5
|
ご質問のような、「配列から、ある条件を満たす要素だけを抽出して、新たな配列を作る」という場合、mapではなく、[filter](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) を使うとよいでしょう。filterを使うと、extArrayByNameは以下のように書けます。
|
6
6
|
|