Это потому, что ключ объекта с точкой не является допустимым синтаксисом. Вы можете решить эту проблему, обернув ключ []
. Также метод .map()
создает новый массив, заполненный результатами вызова предоставленной функции для каждого элемента в вызывающем массиве. Таким образом, вы должны использовать метод .forEach()
, например:
data.forEach(item => newData.push({[item.country]: item.states}));
var data=[{country:"United States",states:["Alabama","Alaska","Arizona"]},{country:"Canada",states:["Ontario","Saskatchewan","Alberta"]},{country:"Australia",states:["Australian Capital Territory","Jervis Bay Territory","New South Wales","Queensland"]}];
var newData = [];
data.forEach(item => newData.push({[item.country]: item.states}));
console.log(newData);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Или, вы можете использовать метод .map()
и просто вернуть объект внутри обратного вызова .map()
и сохранить его в newData
как:
newData = data.map(item => ({[item.country]: item.states}));
var data=[{country:"United States",states:["Alabama","Alaska","Arizona"]},{country:"Canada",states:["Ontario","Saskatchewan","Alberta"]},{country:"Australia",states:["Australian Capital Territory","Jervis Bay Territory","New South Wales","Queensland"]}]
var newData = data.map(item => ({[item.country]: item.states}));
console.log(newData);
.as-console-wrapper { max-height: 100% !important; top: 0; }