2016-06-16 3 views
2

オブジェクトに空の配列である多数の属性を追加したいとします。私の実装は冗長であるようです。JSオブジェクトに効率的に追加できますか?

let obj = {}; 
obj.x = []; 
obj.y = []; 
obj.z = []; 

...無限

は逆オブジェクトデ構造のような他の方法は、ありますか?

+0

ウィッヒ名は空の配列を持っている必要がありますか? –

答えて

2

let obj = {}; 
 

 
for(let key of "xyz") 
 
    obj[key] = [] 
 

 
console.log(obj)

+0

素晴らしい。 'const'や' let'をお勧めしますか? 'for( 'key1'、 'key2'、 'key3')のキーを受け取ります。 {obj [key] = []}' だから私は 'obj = {key1:[]、key2:[]、key3:[]}' – omgj

+1

const変数が上書きされないようにする場合は – Endless

+0

'const'と' let'は参照ではない値なので ' const obj = {}; obj.thing = '物事'; 'const obj = {}の間は問題ありません。 obj = {thing: 'thing'}; 'はエラーになります。 – jaybee

3

あなたはそれを再利用可能できる

var obj = {}; 
var keys = [ "x", "y", "z" ]; 
keys.forEach(function(val){ 
    obj[ val ] = []; 
}); 
0

を一行次に

var obj = ['x', 'y', 'z'].reduce((obj, key) => (obj[key] = [], obj), {}) 

でそれを行うためのちょうど別の方法を試すことができます

var fn = (obj, key) => (obj[key] = [], obj); 
 
var dest = {}; 
 

 
var same = ['x', 'y', 'z'].reduce(fn, dest) 
 

 
console.log(dest) 
 
console.log(same === dest)

関連する問題