javascript - 根据另一个对象的模式创建一个空对象
问题描述
我有一个这样的对象:
const Media = {
references: { analyze: [432, 5], translate: ["string", false] },
extensions: { analyze: ["something"], translate: ["something here"] },
words: ["a word"],
brackets: [],
pronounce: [],
instructions: {
Expand_Explain: ['Before_First_Movie_Watch_Explain', 'Before_First_Movie_Watch_Explain2', 'Before_First_Movie_Watch_Explain3'],
Hot_Tutorial: ['1', 'some element', 2],
Next: [54, true, "string"],
}
}
我想创建另一个对象,其中只有instructions
带有空数组的属性:
所以这是期望的结果:
const NewEmptyMedia = {
instructions: {
Expand_Explain: [],
Hot_Tutorial: [],
Next: [],
}
}
注意:属性的模式始终相同,instructions
但内部属性的数量instructions
是可变的。
我创建了一个循环来执行此操作,但我需要检查多个 if 语句,这真的很难看......
解决方案
您可以在 Object.keys 上为 Media.instructions 使用 reducer。
像这样的东西就足够了:
Object.keys(Media.instructions).reduce((acc, key) => ({...acc, [key]: []}), {});
推荐阅读
- travis-ci - Travis-CI - 铬 62 而不是 77
- kotlin - 使用 by 委托给另一个相同类型的对象甚至不会编译
- python - 有什么方法可以在 django settings.py 中导入模型?
- javascript - 如何在查询参数中使用 plus 而不是 %20 和 vue 路由器?
- azure - Azure Webjob/函数重试计数
- python - __init__() 接受 2 个位置参数,但 3 个是使用 WebDriverWait 和 expected_conditions 作为 element_to_be_clickable 和 Selenium Python 给出的
- mysql - 插入查询是否需要三个引号?
- jsf - 在前端的下拉列表和搜索框中键入适当的搜索
- javascript - 如何在 alasql 中按日期配置查询条件。谷歌脚本 + AlaSql
- serialization - 无法序列化值。错误:格式错误的 UTF-8 字符,可能编码不正确