Как изменить массив объектов (исходная форма в новую форму) с помощью машинописного текста

Я получаю данные в виде массива объектов, которые находятся в форме значения ключа. Как показано ниже:

"data": [
    {
      "groupBy": "InvalidAuth",
      "count": 41
    },
    {
      "groupBy": "InvalidAuthEmpty",
      "count": 75
    },
    {
      "groupBy": "InvalidAuthSQL",
      "count": 75
    },
    {
      "groupBy": "Unsecured",
      "count": 75
    }
  ]

Но моя идея здесь изменить его первоначальную форму и сделать ее такой, как показано ниже, означает, что ключ «count» должен быть «value», а ключ «groupBy» должен быть «name». Как изменить его программно, используя typescript или javascript:

data:[
            {value:41, name:'InvalidAuth'},
            {value:75, name:'InvalidAuthEmpty'},
            {value:75, name:'InvalidAuthSQL'},
            {value:75, name:'Unsecured'}
]

Поскольку оригинальная форма не работает с электронными картами. электронные диаграммы работают только со значением и формой имени.

Кто-нибудь может мне помочь?

Спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
50
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Возможно, это решит вашу проблему:

let newData = [];
for(let thisData of data){
  newData.push({
    value: thisData.count,
    name: thisData.groupBy,
  })
}
Ответ принят как подходящий

Вы можете использовать map, чтобы получить копию исходного массива с нужными именами свойств:

const data = [
    {
      "groupBy": "InvalidAuth",
      "count": 41
    },
    {
      "groupBy": "InvalidAuthEmpty",
      "count": 75
    },
    {
      "groupBy": "InvalidAuthSQL",
      "count": 75
    },
    {
      "groupBy": "Unsecured",
      "count": 75
    }
  ];
  
  const data2 = data.map(x => ({
    value: x.count,
    name: x.groupBy
  }));
  
  console.info(data2);

Вы можете просто использовать map и destructuring

const data = [{"groupBy": "InvalidAuth","count": 41},{"groupBy": "InvalidAuthEmpty","count": 75},{"groupBy": "InvalidAuthSQL","count": 75},{"groupBy": "Unsecured","count": 75}]
  
let op = data.map(({count:value,groupBy:name}) => ({name,value}))

console.info(op)

почему вы не использовали data напрямую? зачем инкапсулировать его в obj? было бы хорошо без него.

its4zahoor 03.07.2019 08:16

@its4zahoor это называется Разрушение, оно не инкапсулирует его в объект, да, это вопрос выбора, даже если вы делаете это напрямую, тогда это тоже нормально

Code Maniac 03.07.2019 08:19

Вам нужно просто перебрать data array и переименовать существующие ключи и удалить старые.

var data= [
    {
      "groupBy": "InvalidAuth",
      "count": 41
    },
    {
      "groupBy": "InvalidAuthEmpty",
      "count": 75
    },
    {
      "groupBy": "InvalidAuthSQL",
      "count": 75
    },
    {
      "groupBy": "Unsecured",
      "count": 75
    }
  ]
  
   data.forEach(function(elem){
    elem.name =elem.groupBy;
    elem.value =elem.count;
    delete elem['groupBy'];
    delete elem['count'];
  });
  console.info(data);

Другие вопросы по теме