首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用现有的键值重构JSON对象?

如何用现有的键值重构JSON对象?
EN

Stack Overflow用户
提问于 2021-10-29 06:19:18
回答 1查看 96关注 0票数 0

我需要用现有的键值重新构造JSON对象,请检查下面的JSON输入格式

代码语言:javascript
复制
{
  'Demo-1': [
    {
      sku: 'Brisk',
      count: '2',
    },
    {
      sku: 'Pepsi Cans',
      count: '2',
    },
    {
      sku: 'Pepsi Cans',
      count: '4',
    }
    
  ],
  
  'Demo-2' :{
    "A":[
        {
        sku: 'Mountain',
        count: '4',
        },
        {
        sku: 'Pepsi Bottles',
        count: '4',
        }
    ],
    "B":[
        {
        sku: 'Lipton Dietgreentea',
        count: '2',
        },
        {
        sku: 'Lipton Dietgreentea Mixedberry',
        count: '2',
        }
 
    ]
  }
}

在上面输入的JSON中,"Demo-1“有一个对象数组,第二个数组有两个数组对象。我想将上面的数组更改为类似于下面的结果

代码语言:javascript
复制
{
    'Demo-1': {
        items: [{
                sku: 'Brisk',
                count: '2',
            },
            {
                sku: 'Pepsi',
                count: '2',
            },
            {
                sku: 'Pepsi',
                count: '4',
            }

        ],
        mode: "Veri",
        istatus: "open"

    },
    'Demo-2': {
        "items":{ 
           "A" :[
               {
                    sku: 'Mountain',
                    count: '4',
                },
                {
                    sku: 'Pepsi Bottles',
                    count: '4',
                }
            ],
            "B" :[ 
            {
                sku: 'Lipton Dietgreentea',
                count: '2',
            },
            {
                sku: 'Lipton Dietgreentea Mixedberry',
                count: '2',
            }]
        },
        mode: "Doubled",
        istatus: "Closed"
    }
}

我已经使用了下面的代码解决方案来部分实现这一点

代码语言:javascript
复制
Object.fromEntries(
    Object.entries(obj).map(
      ([key, items]) => [key, { items, mode: "verification", status: "open" }]
    )
  )

现在,如果对象有两个像Demo-2这样的数组对象,那么模式值应该“加倍”,请帮助我解决这个问题。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-10-29 06:42:40

您需要在映射函数中添加条件。

适当的条件取决于可能的items值。

如果items总是array{ A, B } object,那么以下条件就足够了:

代码语言:javascript
复制
Object.fromEntries(
 Object.entries(obj).map(
   ([key, items]) => [key, { items, mode: Array.isArray(items) ? 'Single' : 'Doubled', status: 'open' }]
 )
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69764448

复制
相关文章

相似问题

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