преобразовать объект в массив объектов в этом формате с помощью моих собственных ключей?

#javascript #arrays #object

#javascript #массивы #объект

Вопрос:

У меня есть этот объект

 {TDD_rating: 80, Fluency_rating: 70, Debug_rating: 64, Model_rating: 53, Refactor_rating: 68,}
  

что я хочу в формате этого массива

 [
  { subject: 'TDD', score: 80 },
  { subject:  'Fluency', score: 70},
  { subject:  'Debug', score: 65},
  { subject:  'Model', score: 53},
  { subject:  'Refactor', score: 68},

];
  

Я пытался использовать Object.entries и map, но, похоже, не могу туда попасть

Ответ №1:

Вы могли бы использовать комбинацию Object.entries() и Array.prototype.map() метод, чтобы получить свой результат. Получите пары ключ-значение, используя Object.entries() метод, а затем сопоставьте его, чтобы создать требуемый массив объектов.

 const data = {
  TDD_rating: 80,
  Fluency_rating: 70,
  Debug_rating: 64,
  Model_rating: 53,
  Refactor_rating: 68,
};

const ret = Object.entries(data).map(([x, y]) => ({
  subject: x.replace('_rating', ''),
  score: y,
}));
console.log(ret);  

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

1. потрясающе работает отлично! целую вечность задавался вопросом, как это сделать

2. Привет, извините, что спрашиваю еще раз, но я понял, что мой вывод, который мне нужен, немного отличается, мне это нужно без «_rating» в теме? Как я могу это сделать?

3. @JohnnyYip, проверь, я обновил код. Пожалуйста, дайте мне знать, теперь все в порядке.

4. еще раз спасибо! Совершенно новичок в JS, но все еще нахожу проблемы с этими простыми вещами

Ответ №2:

Для этого вы можете использовать Object.keys и метод map,

 const obj = {
  TDD_rating: 80,
  Fluency_rating: 70,
  Debug_rating: 65,
  Model_rating: 53,
  Refactor_rating: 68,
};

const result = Object.keys(obj).map((key) => ({ subject: key, score: obj[key] }));
console.log(result);