使用Array中的值作为键

时间:2018-06-13 06:07:30

标签: javascript

假设我有一个哈希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;
});

提前感谢您的建议/答案!

1 个答案:

答案 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