javascript - 使用数组中的值作为键在 JavaScript 哈希中设置默认值

标签 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;
});

预先感谢您的建议/回答!

最佳答案

您可以首先使用 .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/

相关文章:

javascript - javascript 中 setTimeout() 返回的数字可以为负数吗?

javascript - 当用户删除离线数据时保留 Firefox 附加组件 localStorage

javascript - 使用 Javascript 区分用户滚动和编程滚动

php - 移动在线iOS应用程序的良好教程或指南

javascript - 导入类的函数未定义

javascript - 限制 Google Places Api 结果

javascript - React 建议和自动完成不适用于 VSCode 中带有 js 扩展名的文件

javascript - Node.js 表达静态图像服务

javascript - 取消 HTML 页面中的 keydown 吗?

javascript - 在元素属性中像函数一样使用 AngularJS 2 Component