Umówię się, aby nacisnąć jeden przedmiot w inny. Mam wielowymiarowy obiekt JSON, taki jak {"Pozycja1": {"Klucz": "Wartość", "Klucz": "Wartość" ...

1
Sanjay Tapase 15 marzec 2021, 15:40

3 odpowiedzi

Najlepsza odpowiedź

W tej chwili pytanie jest niejasne. A dany obiekt wejściowy jest błędny. Obiekt nie może mieć duplikatów właściwości. Regulacja tych błędów, prawdopodobnie można użyć Object.entries(), aby uzyskać iterable tablicę obiektu i użyć Array#reduce, aby przekształcić go do wymaganego formularza

Spróbuj wykonać następujące czynności

const input = {
  "item1": {
    "key1": "Value1",
    "key2": "Value2"
  },
  "item2": {
    "key1": "Value1",
    "key2": "Value2"
  },
  "item3": {
    "key1": "Value1",
    "key2": "Value2",
    "subItem3": {
      "key1": "Value1",
      "key2": "Value2"
    }
  }
};

const output = Object.entries(input).reduce((acc, [key, value]) => {
  if (key === 'item3')
    acc['item2'] = { ...acc['item2'], [key]: value };
  else 
    acc[key] = value;
  return acc;
}, Object.create(null));

console.log(output);
.as-console-wrapper { max-height: 100% !important; top: 0px }
1
Michael D 15 marzec 2021, 12:53

Powiedzmy, że jest w zmiennej MyObject.

myObject.item2.item3 = myObject.item3;
delete myObject.item3;
0
JerMah 15 marzec 2021, 12:49

Spróbuj w ten sposób.

let items = {
       "item1":{
          "key":"Value",
          "key":"Value"
       },
       "item2":{
          "key":"Value",
          "key":"Value"
       },
       "item3":{
          "key":"Value",
          "key":"Value",
          "subItem3":{
             "key":"Value",
             "key":"Value"
          }
       }
    }

    items.item2.item3 = items.item3
    delete items.item3

    console.log(items)
0
Masud Morshed 15 marzec 2021, 13:13