假设我有一个哈希 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;
});
预先感谢您的建议/回答!
最佳答案
您可以首先使用 .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
}
现在,您可以简单地使用 Object.assign
将此对象分配给您的 h.data
,如
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
关于javascript - 使用数组中的值作为键在 JavaScript 哈希中设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50830100/