Как реструктурировать объект JSON с новыми ключевыми значениями?

#javascript #arrays #json

Вопрос:

Пожалуйста, помогите мне воссоздать объект JSON, полученный из API, см. ниже Объект JSON из API ниже указан входной JSON

 {
  'Demo-1': [
    {
      sku: 'Brisk',
      count: '2',
    },
    {
      sku: 'Pepsi Cans',
      count: '2',
    },
    {
      sku: 'Pepsi Cans',
      count: '4',
    }
    
  ],
  
  'Demo-2' : [
    {
      sku: 'Mountain',
      count: '4',
    },
    {
      sku: 'Pepsi Bottles',
      count: '4',
    },
    {
      sku: 'Lipton Dietgreentea',
      count: '2',
    },
    {
      sku: 'Lipton Dietgreentea Mixedberry',
      count: '2',
    }
  ]
}
 

из этого следует преобразовать приведенный ниже объект JSON с дополнительными ключами и реструктурировать элементы массива внутри другого ключа

Результат должен быть таким

 {
    'Demo-1': {
        items: [{
                sku: 'Brisk',
                count: '2',
            },
            {
                sku: 'Pepsi',
                count: '2',
            },
            {
                sku: 'Pepsi',
                count: '4',
            }

        ],
        mode: "Veri",
        status: "open"

    },
    'Demo-2': {
        "items": [{
                sku: 'Mountain',
                count: '4',
            },
            {
                sku: 'Pepsi Bottles',
                count: '4',
            },
            {
                sku: 'Lipton Dietgreentea',
                count: '2',
            },
            {
                sku: 'Lipton Dietgreentea Mixedberry',
                count: '2',
            }
        ],
        mode: "Clear",
        status: "Closed"
    }
}
 

Я пробовал в angular, но не могу добиться результата, пожалуйста, посмотрите код ниже

  Object.entries(_data).map((items,idx)=>{
     
      this._newPickLists = {
        items[0] :{
          items : items[1],
          mode : 'Verification',
          status : 'open'
        }
      }

    
    })
 

заранее спасибо

Комментарии:

1. Можете ли вы предоставить фрагмент кода. Есть вещи, подобные this которым не имеют смысла, и мы не можем воспроизвести проблему

2. это просто объявление в угловых списках _newPickLists: любое;

Ответ №1:

Используя Object.entries и Object.fromEntries , вы можете просто изменить значение объекта с элементами в качестве ключа

 const obj = {"Demo-1":[{"sku":"Brisk","count":"2"},{"sku":"Pepsi Cans","count":"2"},{"sku":"Pepsi Cans","count":"4"}],"Demo-2":[{"sku":"Mountain","count":"4"},{"sku":"Pepsi Bottles","count":"4"},{"sku":"Lipton Dietgreentea","count":"2"},{"sku":"Lipton Dietgreentea Mixedberry","count":"2"}]};

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

Ответ №2:

Просто замените переменную newObject на переменную в вашем приложении.

 const newObject = {};

for (const [key, value] of Object.entries(obj)) {
    newObject[key] = {};
    newObject[key]["items"] = value;
    newObject[key].mode = "Clear";
    newObject[key].status = "Closed";

}

console.log(newObject);


 

Ответ №3:

Вот решение, которое обновит исходный объект данных:

   Object.keys(data).forEach((key)=> { 
     data[key] = {items: data[key], mode: 'Veri', status: 'open' }}
  )