首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌套数据结构中组合对象时设置对象属性

在嵌套数据结构中组合对象时设置对象属性
EN

Stack Overflow用户
提问于 2020-08-24 16:12:35
回答 2查看 49关注 0票数 0

我正在尝试编写一个富有表现力的JSON表示,其中我尝试进行对象组合,直接在组合中设置键值。但是,我不能以嵌套的方式组合多个对象。

我想要实现的是一种富有表现力的方式来编写具有可重用对象的对象数据结构,并以一种简洁的方式替代JSX --这就是为什么我希望能够“重用”这些对象组件,并尝试在组合时使用等号来设置子键。我只想实现没有库的原生JavaScript。JSX我猜,如果有人知道的话,可能是用正则表达式从字符串转换HTML标记?我更喜欢使用对象字面量的解决方案。任何想法都将不胜感激。

示例:

代码语言:javascript
复制
const foo = {
    name: 'Bob',
    abilities: {
        superpower: 'Says grrr',
        mood: 'Gruchy'
    }
}

const bar = {
    name: 'Denny',
    abilities: {
        superpower: 'Diabetes',
        mood: 'Hopeful'
    }
}

const dataStructure = {
    name: 'something',
    children: [
        foo.children = [ // 'foo' object will result in an array, even if we only set .children
            bar.children = [
                {
                    name: 'somethingElse'
                }
            ]
        ]
    ]
}

/*
    Desired resulting data structure:

    {
        name: 'something',
        children: [
            {
                name: 'Bob',
                abilities: {
                    superpower: 'Says grrr',
                    mood: 'Gruchy'
                },
                children = [
                    {
                        name: 'Denny',
                        abilities: {
                            superpower: 'Diabetes',
                            mood: 'Hopeful'
                        },
                        children = [
                            {
                                name: 'somethingElse'
                            }
                        ]
                    }
                ]
            }
        ]
    }
*/
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-24 18:19:54

以下是工作示例:

代码语言:javascript
复制
const foo = {
  name: 'Bob',
  abilities: {
    superpower: 'Says grrr',
    mood: 'Gruchy'
  }
}

const bar = {
  name: 'Denny',
  abilities: {
    superpower: 'Diabetes',
    mood: 'Hopeful'
  }
}

const dataStructure = {
  name: 'something',
  children: [{
    ...foo,
    children: foo.children = [{
      ...bar,
      children: bar.children = [{
        name: 'somethingElse'
      }]
    }]
  }]
}

console.log('Result:', dataStructure)
console.log('Foo:', foo)
console.log('Bar:', bar)

注意:但是这是非常奇怪的你想要做的事情……

票数 1
EN

Stack Overflow用户

发布于 2020-08-24 17:29:54

你必须在你的变量定义之外设置你的bar.children,所以我猜下次它不会被调用。具有这样的表达式:

代码语言:javascript
复制
bar.children = 
{
    name: 'somethingElse'
}

const dataStructure = {
    name: 'something',
    children: 
        [foo,
        children = [bar]]
}

将为您提供以下输出:

代码语言:javascript
复制
{
    "name": "something",
    "children": [
        {
            "name": "Bob",
            "abilities": {
                "superpower": "Says grrr",
                "mood": "Gruchy"
            }
        },
        [
            {
                "name": "Denny",
                "abilities": {
                    "superpower": "Diabetes",
                    "mood": "Hopeful"
                },
                "children": {
                    "name": "somethingElse"
                }
            }
        ]
    ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63557108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档