首页 > 解决方案 > 根据另一个对象的模式创建一个空对象

问题描述

我有一个这样的对象:

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 语句,这真的很难看......

标签: javascript

解决方案


您可以在 Object.keys 上为 Media.instructions 使用 reducer。

像这样的东西就足够了:

Object.keys(Media.instructions).reduce((acc, key) => ({...acc, [key]: []}), {});

推荐阅读