Преобразование объекта массива в объект пар в javascript

У меня есть объект, подобный приведенному ниже.

var data = {data1:"test",data2:"test2"}

Как я могу преобразовать это в следующий объект?

[{data1:"test"},{data2:"test2"}]

Поведение ключевого слова "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) для оценки ваших знаний,...
1
0
38
3

Ответы 3

Вы можете использовать Object.entries() с array#map для создания массива объектов из вашего объекта.

const data = { data1:"test", data2:"test2" },
      result = Object.entries(data).map(([key, value]) => ({[key]: value}));
console.info(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Объекты JavaScript - это словари, вы можете использовать Object.keys, чтобы поместить имена свойств объекта в массив, а затем сопоставить каждый элемент массива с новым объектом следующим образом:

var result = Object.keys(data).map(k => ({ [k]: data[k] }));

Добавьте пояснение, пожалуйста.

connexo 30.03.2021 22:46
Object.keys(data) возвращает ключи в объекте как [data1, data2 ]. map перебирает массив, а также возвращает массив. здесь k - ключ от [data1, data2 ]. затем в карте он подготовил { [k]: data[k] }, который добавляется в массив и будет возвращен картой.
Taimoor Qureshi 30.03.2021 23:03

Пояснение добавлено, спасибо

Alex Pereverzyev 30.03.2021 23:31
for...in тоже работает, но да, я определенно рекомендую использовать более «родные» способы итерации по объектам.
Reality 30.03.2021 23:37

Старый школьный путь:

const data = {data1:"test",data2:"test2"};
let result = [];
for(let key in data){
  result.push({[key]: data[key]});
}
console.info(result);

Новый способ (используйте Object.Keys, как указано в другом ответе. Он отличается специально для поощрения уникальности. Для более «компактного» и «ресурсоэффективного» кода используйте другой ответ, упомянутый Алексом Переверзьевым):

const data = { data1:"test", data2:"test2" }
const result = [];
//This returns the keys of data ("data1", "data2"). Then use bracket notation to find the value in the object (data["data1"]):
Object.keys(data).forEach(key => {
  //Push into the array the name of the key along with its value
  result.push({[key]: data[key]})
});
console.info(result);

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

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