2017-12-18 11 views
1

、私はそうのような角括弧の中にキーをラップすることができます。文字列を介して配列要素にアクセスする簡単な方法はありますか?オブジェクトで

// A.js 

const category = 'foo' 

return { [category] : 'bar' } // { foo: 'bar' } 

は、配列の要素と同じことを行う簡単な方法はありますか?

// B.js 

const category = 'foo' 
const items.foo = [1, 2, 3] 
const item = 4 

return { items: [...items.category, item] } // throws an error 

ように私が取得できるようにしたい{アイテムを[1、2、3、4]}

B.jsに方法はありますか?

+0

それは '{項目でなければなりませんが]} '、そしてアイテムを初期化する必要があります:' 'const items = {foo:[1、2、3]}'。 –

+1

'{items:[items items、category]、item]}' –

+0

私は{items}にアクセスしたいのと同じように... items.foo経由で... items.'foo 'にアクセスしたいと思います。 : 'bar'}を{['foo']: 'bar'}して、fooをハードコードする必要はありません。 – chachathok

答えて

2

property accessorsあります。

あなたは、ドット表記を使用する場合は、プロパティが実際のプロパティ名でなければなりません。第三の例では

words=new Object; 
 
    words.greeting='hello'; 
 
    console.log(words.greeting);  //hello 
 
    console.log(words['greeting']); //hello 
 
    console.log(words[greeting]); //error

greetingはない文字列リテラルとして、変数として扱われます、greetingが変数として定義されていないため、JavaScriptインタプリタはエラーをスローします。

我々は変数としてgreetingを定義する場合:

var greeting = 'greeting'; 

を第三の例は動作します:

words=new Object; 
 
    words.greeting='hello'; 
 
    var greeting='greeting'; 
 
    console.log(words[greeting]);

ですから、プロパティアクセサとして角括弧を使用する必要があります。

[...items[category],item] 
0

あなたは同じ構文を使用することができます:ドット表記と角括弧の両方

const category = 'foo' 
 
const items = {foo: [1, 2, 3]} 
 
const item = 4 
 
    
 
console.log({ items: [...items[category], item] })

0

あなたが別の変数を使用してfooプロパティにアクセスしたい場合はそのように、あなただけの、角括弧表記を使用することができます[...項目[カテゴリ]、アイテム:

const category = 'foo' 
const items = { 
    foo: [1, 2, 3] 
} 

const item = 4 

console.log({ items: [...items[category], item] }); 
関連する問題