#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);