Вы объединяете массивы и объекты.Если я правильно понимаю, то, что вы хотите, это:
const newData = data.map(obj => {
return {
[obj.main]: {
second: obj.second
}
};
});
Учитывая ваш пример ввода
const data = [ {
main: 7,
second: 2
otherData: 'some string'
} ];
Это вернет
[
{
7: {
second: 2
}
}
]
Обновление от комментария
Похоже, вы действительно хотите уменьшить здесь.Используйте это:
const reduced = data.reduce((acc, {main, second}, index) => {
acc[main] = {second, index};
return acc;
}, {});
Что для вашего примера ввода дает
{
'7': {
second: 2,
index: 0
}
}
Обратите внимание, что, как я сказал ниже, будьте осторожны, потому что объект с тем же main
, что и предыдущий будет перезаписывать предыдущую запись.