Как удалить массив объекта и изменить структуру объекта в JavaScript или TypeScript?

#javascript #arrays #typescript #object

#javascript #массивы #машинописный текст #объект

Вопрос:

Я ищу решения для изменения структуры объекта, которые имеют несколько массивов объектов для прямого доступа к объекту.

консоль.журнал (значение.данные.сводка[0].данные)

Поскольку я не хочу получать доступ к массивам таким образом, поэтому я хочу изменить структуру своих данных, есть ли какой-нибудь способ добиться чего-то вроде объекта результата?

Таким образом, я могу напрямую получить доступ к вложенному массиву объектов?

Я хотел бы добиться чего-то подобного в результирующем объекте.

   let value =   {
   "data":{
      "summary":[
         {
            "code":"9280",
            "data":[
               {
                  "val1":"test1",
                  "val2":"CAD",
                  "val3":0,
               },
               {
                  "val1":"test2",
                  "val2":"USD",
                  "val3":0,
               },
            ]
         },
      ]
   }
}

  let result =   {
   "data": {
      "code":"9280",
      "summary":[
               {
                  "val1":"test1",
                  "val2":"CAD",
                  "val3":0,
               },
               {
                  "val1":"test2",
                  "val2":"USD",
                  "val3":0,
               },
            
         
      ]
   }
} 

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

1. Очень неясно, чего вы хотите достичь. Ожидаемый результат, а также код, который вы написали, пытаясь его решить, помогут.

2. @LaurentS. Я подумал то же самое, но let result ниже есть блок.

3. @app вы просматривали методы Array.prototype, такие как .map() , .reduce() или уже пробовали цикл for?

4. Обновил мой вопрос.

Ответ №1:

если вы хотите изменить значение, чтобы оно было результатом, вы можете сделать это таким образом

   let value =   {
   "data":{
      "summary":[
         {
            "code":"9280",
            "data":[
               {
                  "val1":"test1",
                  "val2":"CAD",
                  "val3":0,
               },
               {
                  "val1":"test2",
                  "val2":"USD",
                  "val3":0,
               },
            ]
         },
      ]
   }
}
let result =  {data:{
  code:value.data.summary[0].code,
  summary:[...value.data.summary[0].data]}};
console.log(result); 

Ответ №2:

Вы могли бы присвоить объектам в массиве данных ключ:

 let value = {
  "data":{
    "summary":[
      {
        "code":"9280",
        "data":{
          0: {
              "val1":"test1",
              "val2":"CAD",
              "val3":0,
            },
          "sum2": {
            "val1":"test2",
            "val2":"USD",
            "val3":0,
          },
        }
      },
    ]
  }
}
 

Вы могли бы сделать то же самое для сводного массива, но я не знаю, это ли то, что вы ищете. В качестве альтернативы, можно объединить сводный массив в один объект.

 // Summary with keys
let value = {
  "data":{
    "summary": {
      "sum1": {
        "code":"9280",
        "data":{
          0: {
              "val1":"test1",
              "val2":"CAD",
              "val3":0,
            },
          1: {
            "val1":"test2",
            "val2":"USD",
            "val3":0,
          }
        }
      }
    }
  }
}

// Summary as a single object
let value = {
  "data":{
    "summary": {
      "code":"9280",
      "data":{
        0: {
            "val1":"test1",
            "val2":"CAD",
            "val3":0,
          },
        "example": {
          "val1":"test2",
          "val2":"USD",
          "val3":0,
        }
    }
  }
}