2016-11-22 19 views
-2

したがって、動的プロパティ名を持つオブジェクトを配列から取得する必要があります。動的プロパティ名を持つオブジェクトを作成する方法

var fruits = {}; 

var props = ['orange', 'apple', 'banana']; 

for (var i = 0; i < props.length; i++) { 
    fruits.props[i] = 'Juice'; 
} 

私のオブジェクトは、次のようになります:

fruits { orange: 'Juice', apple: 'Juice', banana: 'Juice' }; 

しかし、私はエラーを取得しています:私は

Uncaught TypeError: Cannot set property '0' of undefined(…)

何をやっているがこれは私がこれまで試したものです違う?

編集:質問のタイトルが似ている

ないので、質問自体は同様である必要があります。この質問は695050とは異なります。なぜなら、DOMから自分のプロパティ名を取得していないからです。私は配列をループしようとしているし、角括弧の表記で作業するときに混乱を招く傾向があります。

+0

'果物[小道具[I] = 'ジュース';括弧表記を説明するための' – somethinghere

答えて

2

fruits.props[i] = 'Juice';のコードでpropsプロパティの0番目のインデックス値を設定しようとすると、プロパティがundefinedで、エラーが発生します。

bracket notationを使用すると、文字列を使用してオブジェクトプロパティを割り当てることができます。

var fruits = {}; 
 

 
var props = ['orange', 'apple', 'banana']; 
 

 
for (var i = 0; i < props.length; i++) { 
 
    fruits[props[i]] = 'Juice'; 
 
    //----^^^^^^^^^^----- 
 
} 
 

 
console.log(fruits);

2

fruits.props[i] = 'Juice';

する必要がありますドット表記を使用して、あなたはダイナミックプロパティ名を使用することはできませんが、ブラケット表記で、プロパティはに期待されているのでfruits[props[i]] = 'Juice';

文字列であり、その文字列はリテラルまたは動的に取得された値です。

+0

Upvoted。 – Anna

2

括弧内のキーが必要です。詳細はproperty accessorsを参照してください。

Property accessors provide access to an object's properties by using the dot notation or the bracket notation.

Syntax

object.property 
object["property"] 

var fruits = {}; 
 

 
var props = ['orange', 'apple', 'banana']; 
 

 
for (var i = 0; i < props.length; i++) { 
 
    fruits[props[i]] = 'Juice'; 
 
    // ^ ^
 
} 
 

 
console.log(fruits);

関連する問題