如何从javascript中的数组值创建对象键?

时间:2021-06-17 11:07:59

标签: javascript arrays object key

我是 javascript 新手,在做一个小项目时遇到了一个问题, 我有一个数组,其中包含像这样分成几个季度的一天

['09:00', '09:15', '09:30', '09:45']

我想创建一个对象,其键是这个数组的值,就像这样:

var obj = {
    '09:00': false , 
    '09:15': true , 
    '09:30': false 
    ....
}

但我不想手动执行此操作,因为该对象将包含直到 00:00 的时间,因此我将不得不编写大量代码,而我认为可以自动执行此操作, 我尝试了 fromEntries() 方法,但是当我只想设置对象的键时,它给了我一个键值对列表。 有什么解决办法吗?

3 个答案:

答案 0 :(得分:3)

您可以简单地使用 for-loop,例如:

const arr = ['09:00', '09:15', '09:30', '09:45'];
let obj = {};
for (var i = 0; i < arr.length; ++i)
  obj[arr[i]] = '';

console.log(obj);

我不知道 truefalse 的逻辑,所以我分配了一个空的 string

答案 1 :(得分:2)

你的直觉很好:Object.fromEntries() 可以。

但是你必须像这样构建一个数组:

[['09:00',true ], ['09:30', true] /*...*/]

为了做到这一点,一个简单的 .map() 可以帮助

Object.fromEntries(
    ['09:00', '09:15', '09:30', '09:45'].map(hour=>[hour, true])
)

您可以将 true 替换为 getStatusFromHour(hour),然后构建一个函数,将正确的布尔值设置为选定的小时。

答案 2 :(得分:0)

您可以编写一个简单的 for 循环并将数据附加到具有所需状态的对象。 喜欢:

var arr = ['09:00', '09:15', '09:30', '09:45', '10:00'];
var obj = {};

for(var i = 0; i < arr.length; i++) {
  obj[arr[i]] = false;
}