如何从已知键数组创建一个 Javascript 对象,但将值初始化为 null?
How to create a Javascript object from an array of known keys, but with the values initialized to null?
我有一个 JS 对象,我将从中提取一个键数组(使用 Object.keys()
),然后我想使用这些相同的键创建一个不同的对象,但这次它的值初始化为null
.
在 Python 中,我会做类似的事情:
list_of_keys = ["key_1", "key_2"]
# The * unpacks the list, could be thought as a JS spread operator
new_dict = dict.fromkeys(*list_of_keys)
我会检索一个新字典,其所有值都默认初始化为 None
。
不过,我似乎没有在 Javascript 中找到类似的 属性 或方法。
编辑: 如果使用 ESLint,@CerebralFart 的回答(for... of...
)可能会触发 linter 的投诉。 It can be addressed here.
您可以使用reduce
方法来完成:
const object = { key_1: 'value_1', key_2: 'value_2', key_3: 'value_3' };
const new_object = Object.keys(object).reduce((accumulator, currentValue)=> {
accumulator[currentValue] = null;
return accumulator;
}, {});
console.log(new_object)
没有必要让它比简单的 for 循环更复杂:
const object = { key_1: 'value_1', key_2: 'value_2', key_3: 'value_3' };
const newObject = {};
for (const key in object) {
newObject[key] = null
}
console.log(newObject);
或者,如果您只有钥匙
const keys = ['key_1', 'key_2', 'key_3'];
const newObject = {};
for (const key of keys) {
newObject[key] = null
}
console.log(newObject);
预计到达时间:您也可以使用 Object.fromEntries
进行一些映射。根据您要对对象执行的操作,这可能会稍微快一些。
const object = { key_1: 'value_1', key_2: 'value_2', key_3: 'value_3' };
const newObject = Object.fromEntries(Object.keys(object).map(key => [key, null]));
console.log(newObject);
我有一个 JS 对象,我将从中提取一个键数组(使用 Object.keys()
),然后我想使用这些相同的键创建一个不同的对象,但这次它的值初始化为null
.
在 Python 中,我会做类似的事情:
list_of_keys = ["key_1", "key_2"]
# The * unpacks the list, could be thought as a JS spread operator
new_dict = dict.fromkeys(*list_of_keys)
我会检索一个新字典,其所有值都默认初始化为 None
。
不过,我似乎没有在 Javascript 中找到类似的 属性 或方法。
编辑: 如果使用 ESLint,@CerebralFart 的回答(for... of...
)可能会触发 linter 的投诉。 It can be addressed here.
您可以使用reduce
方法来完成:
const object = { key_1: 'value_1', key_2: 'value_2', key_3: 'value_3' };
const new_object = Object.keys(object).reduce((accumulator, currentValue)=> {
accumulator[currentValue] = null;
return accumulator;
}, {});
console.log(new_object)
没有必要让它比简单的 for 循环更复杂:
const object = { key_1: 'value_1', key_2: 'value_2', key_3: 'value_3' };
const newObject = {};
for (const key in object) {
newObject[key] = null
}
console.log(newObject);
或者,如果您只有钥匙
const keys = ['key_1', 'key_2', 'key_3'];
const newObject = {};
for (const key of keys) {
newObject[key] = null
}
console.log(newObject);
预计到达时间:您也可以使用 Object.fromEntries
进行一些映射。根据您要对对象执行的操作,这可能会稍微快一些。
const object = { key_1: 'value_1', key_2: 'value_2', key_3: 'value_3' };
const newObject = Object.fromEntries(Object.keys(object).map(key => [key, null]));
console.log(newObject);