【问题标题】:dynamicly nested object from another object来自另一个对象的动态嵌套对象
【发布时间】:2021-09-10 06:35:14
【问题描述】:

试图弄清楚如何从这个动态创建一个新的嵌套对象:

object1 = {
    DataStore : false,
    Header: false,
    Footer : false,
    Sidebar : false,
    Main : false,
    }

像这样嵌套一个:

const registerComponentsLocal = {
    'DataStore': {
        'debug': false
    },
    'Header': {
        'debug': false
    },
    'Footer': {
        'debug': false
    },
    'Sidebar': {
        'debug': false
    },
    'Main': {
        'debug': false
    },
}

键和值必须是动态的。唯一重要的是最终对象的结构。 任何想法都会得到极大的应用。

【问题讨论】:

  • Object.entries(object1).reduce((a, [k, v]) => { a[k] = {debug: v}; return a; }, {});?

标签: javascript object javascript-objects


【解决方案1】:

创建一个实例(即保留旧实例)

let originalObject = {
    DataStore : false,
    Header: false,
    Footer : false,
    Sidebar : false,
    Main : false,
    }

let newObject = Object.assign({}, originalObject) // Copies the original object
Object.entries(newObject).forEach(([key, value]) => newObject[key] = {debug: value})


【讨论】:

  • 接缝好像我很接近。在发布问题后几分钟甚至几秒钟内收到答案令人印象深刻。干得好
【解决方案2】:

这是一个使用reduce的方法

Object.entries(object1)
   .reduce((b,a) => ({...b, [a[0]] : {debug:a[1]}}), {})

为了迭代,我们需要一个数组,Object.entries 给了我们这个。然后,使用reduce,我们遍历object1 中的每个项目,并构建一个结果。在这里,({...b, [a[0]] : {debug:a[1]}}) 这一行将我们的累加对象 b 添加到下一个可迭代对象中:{key: { debug: value}}`

let object1 = {
    DataStore : false,
    Header: false,
    Footer : false,
    Sidebar : false,
    Main : false,
    }
     
const registerComponentsLocal = Object.entries(object1).reduce((b,a) => ( {...b, [a[0]] : { debug:a[1]} }),{})
console.log(registerComponentsLocal)

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    相关资源
    最近更新 更多