2017-03-28 3 views
0

イムはJavaScriptを学習し、いくつかのコードを見ていると、このに走った:小道具は'id'か何かのようなものかもしれJavascript配列のプロパティへのマッピング(item => item [prop])?

array.map(item => item[prop])

私は実際にウェブ上でこの例を見つけることができませんでした。だから私はこのような何かをやってみました:

property = 'id'; 
var arr = [1,2,3,4]; 
var something = arr.map(item => item[property]); 
console.log(something); 

これは動作しません。そして、私はWeb上の例を見つけることができないようです。これはマップ関数の新しい構文ですか?

+2

ES6矢印機能。次は 'map'を使った例です:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Shorter_functions –

+4

なぜあなたは数字の' id'プロパティを取得しようとしていますか? ?あなたはそれが "うまくいかない"と言っていますが、期待される出力である 'undefined'の配列を返しています。 –

+0

私は未定義ではないと思いますね。私は、この関数で渡されたプログラムのデータが実際には数値の配列であることを知っています – msmith1114

答えて

2

「矢印機能」は、関数を記述するための簡潔な方法です。

item => item[property] 

それは(主に)書き込みに相当します。

function(item){ 
    return item[property]; 
} 

はあなたのarr配列は数字が含まれているため、機能にitemになります。数字には'id'というプロパティがないので、「動作しません」という理由があります。

var prop = 'id'; 
var arr = [{id:1, name:"one"}, {id:2, name:"two"}]; 
var something = arr.map(item => item[prop]); 
console.log(something); 

something[1, 2]になってしまうでしょう:

はあなたのようなものがあったら考えてみましょう。

+0

数字の文字列を作成すればどうなりますか?それは働くだろうか?私はプログラムで知っている(私は "データ"のconsole.logステートメントを作った)、それは実際には数字の配列だった。しかし、おそらくそれらの数字は実際にはオブジェクトです... – msmith1114

+0

"仕事"はどういう意味ですか?あなたはどんなアウトプットを期待していますか?文字列も数字も 'id'プロパティを持たない。あなたが知らない場合、 'a ['id']'を実行することは 'a.id'を実行することと同じです。 –

+1

私は間違ったことを理解しました。元の「配列」は実際には配列であり、数値ではありません。それがうまくいきませんでした) – msmith1114

関連する問題