2017-05-11 9 views
1

これはなぜ機能しないのですか? .map関数を使用してすべての配列コンテンツを文字列化

var numbers = [1,2,3,4,5,6,7,8]; 
 
var stringifiedNumbers = numbers.map(function(x) { 
 
    JSON.stringify(x); 
 
}) 
 
console.log(stringifiedNumbers);
はなぜ私の出力です:

アレイ

+2

シンプルな数値に 'JSON.stringify'を使用すると余計に過剰なようです。 'return x.toString()'を使うだけです。 – Jamiec

答えて

5

あなた[ 、不定不定、未定義、不定不定、未定義、未定義、未定義]ストリング化されたコンテンツを返さないので、関数は配列をに変換しますs。 Array#map渡されたコールバックの戻り値に基づいて、各配列要素を変換し、あなたが何も返さないので、それはundefinedにそれらを変換:

var numbers = [1, 2, 3, 4, 5, 6, 7, 8]; 
 
var stringifiedNumbers = numbers.map(function(x) { 
 
    return JSON.stringify(x); 
 
}) 
 
console.log(stringifiedNumbers);

あなたはarrow functionsでこれを短縮することができます:

var stringifiedNumbers = numbers.map(x => JSON.stringify(x)); 

上記の例ではreturn文を1つしか使用していないため、矢印関数で式を暗黙的に返すことができます。

numbers.map(JSON.stringify); 

これは暗黙的に引数を渡し、変数を取り除くためです。