2017-08-14 11 views
0

私は、同じオブジェクトに一定の値で作成したいプロパティの名前を持つプロパティを持つオブジェクトを持っています。私は古い方法でそれをすることができますが、私は単純な脂肪の矢印のソリューションがavaibleでなければならないと思った。そして、私は、配列arrオブジェクトを使用する必要がありますが、デバイスの上限値を直接使用する必要はありません。矢印関数は、これ自体はもはやそれを参照していません。どのようにキャップの値の配列の角かっこを取得するには?値を動的に作成する

let arr = ["onoff", "alarm_motion", "alarm_night"] 
let fillcap = arr => { 

    let obj = {} 

    arr.forEach(a => { 
     return obj[a] = false 
    }) 
    return obj 
} 


let device = { 
    caps: arr, 
    cap: arr.map(c => ({ [c]: false })) 
} 


device = { caps: ['onoff', 'alarm_motion', 'alarm_night'], 
cap: 
[{ onoff: false }, 
{ alarm_motion: false }, 
{ alarm_night: false }] 
} 
device = { 
    caps: arr, 
    cap: fillcap(arr) 
} 

device = { 
    caps: ['onoff', 'alarm_motion', 'alarm_night'], 
    cap: { onoff: false, alarm_motion: false, alarm_night: false } 
} 

答えて

0

何をしようとしていることは動作しませんが、あなたはこのような何かを行うことができます。

const arr = ['onoff', 'alarm_motion', 'alarm_night']; 

const device = { 
    caps: arr, 
    fillcap() { 
     this.cap = this.caps.reduce((cap, c) => Object.assign(cap, { [c]: false }), {}); 
    }, 
}; 

device.fillcap(); 
+0

マップは、それはそれは私が欲しいものであるオブジェクトを作り、キーと値のペアの周りにブラケットを与えます避けてください、ブラケット – wetlip

+0

私は答えを修正しました、@ wetlip – Adam

関連する問題