假设我有一个哈希h
和一个数组a
,如下所示:
h = {'data': {}};
arr = ['2017-01-01', '2017-02-01','2017-03-01', '2017-04-01', ....];
在JavaScript中构建默认哈希表的最简洁有效的方法是什么:
// desired outcome for 'h'
h = {
'data': {
'2017-01-01': 0,
'2017-02-01': 0,
'2017-03-01': 0,
'2017-04-01': 0,
//...there can be more date values here
}
}
我已经实现了下面的解决方案,但想知道下面是否有更多的JavaScript-y(希望更有效)方法:
arr.forEach(function(a) {
h['data'][a] = 0;
});
提前感谢您的建议/答案!
答案 0 :(得分:1)
您可以先将数组转换为.reduce
的对象,如
arr.reduce((o, key) => ({ ...o, [key]: 0}), {})
这会返回一个表单
的对象 {
'2017-01-01': 0,
'2017-02-01': 0,
'2017-03-01': 0,
'2017-04-01': 0,
//...there can be more date values here
}
现在,您只需将此对象分配给h.data
Object.assign
var h = {'data': {}};
var arr = ['2017-01-01', '2017-02-01','2017-03-01', '2017-04-01'];
h.data = Object.assign(arr.reduce((o, key) => ({ ...o, [key]: 0}), {}));
console.log(h)

ps:如果您不知道...
被称为spread operator