#javascript #node.js #arrays #object #ecmascript-2018
Вопрос:
Каков наилучший способ преобразования:
[2019,2020,2021]
Для
{
0: {year:2019},
1: {year:2020},
2: {year:2021}
}
Комментарии:
1. @Barmar Предлагаемый ответ не дает спокойных ответов, так как конечным результатом должен быть объект, а не просто значения массива.
2. Хорошо, хотя это простая модификация.
3. Почему вам нужен объект с цифровыми ключами вместо массива?
Ответ №1:
Пожалуйста, попробуйте это:
a = [2019,2020,2021];
a.reduce((acc, val, idx)=> {acc[idx] = {year: val}; return acc;}, {});
Комментарии:
1. мы создаем 1 объект из массива. Поэтому мы сокращаем массив. Мэй создаст еще один массив. Хотя вопрос действительно поднимает вопрос о том, должен ли он быть массивом, а не объектом.
Ответ №2:
Сочетание Object.assign()
и array.map()
приходит на ум:
const array = [2019,2020,2021];
const object = Object.assign({}, array.map(a => ({year: a})));
console.log("object:", object);
const object2 = {}
array.forEach((a, i) => object2[i] = {year: a});
console.log("object2:", object2);