【问题标题】:How to restructure the JSON Object with existing key values?如何用现有的键值重构 JSON 对象?
【发布时间】:2021-12-14 06:24:53
【问题描述】:

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

{
  '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”有一个对象数组,第二个有两个数组对象。 我想将上面的数组更改为如下所示 结果

{
    '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"
    }
}

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

Object.fromEntries(
    Object.entries(obj).map(
      ([key, items]) => [key, { items, mode: "verification", status: "open" }]
    )
  )

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

提前致谢。

【问题讨论】:

    标签: javascript arrays json object


    【解决方案1】:

    您需要在映射函数中添加条件。
    适当的条件取决于可能的 items 值可能是什么。
    如果items 总是 array{ A, B } object,以下条件就足够了:

    Object.fromEntries(
     Object.entries(obj).map(
       ([key, items]) => [key, { items, mode: Array.isArray(items) ? 'Single' : 'Doubled', status: 'open' }]
     )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 2011-05-27
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      相关资源
      最近更新 更多