У меня есть следующий объект:
let obj = {
"productData": [{
"id": 0,
"daily_netProfit": 1.35208688924,
"daily_grossProfit": 1.35448688924,
"daily_costs": 0.0024,
"created_at": "2018-06-18"
},
{
"id": 1,
"daily_netProfit": 1.35208688924,
"daily_grossProfit": 1.35448688924,
"daily_costs": 0.0024,
"created_at": "2018-06-19"
}
]
}
let dataSet = obj.productData.map((item, i) => [
item.daily_netProfit,
item.daily_grossProfit,
item.daily_costs,
item.created_at,
])
console.info(dataSet)Как вы можете видеть, приведенная выше функция карты создает массив внутри массива. Однако мой окончательный массив результатов с объектами должен выглядеть следующим образом:
[{
daily_netProfit: 1.35208688924,
daily_grossProfit: 1.35448688924,
daily_costs: 0.0024,
day: "2018-06-18"
},
{
daily_netProfit: 1.35208688924,
daily_grossProfit: 1.35448688924,
daily_costs: 0.0024,
day: "2018-06-19"
}
],
Есть ли функция карты для создания вышеуказанного объекта-массива?
Я ценю ваши ответы!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете нанести объект на карту.
var obj = { productData: [{ id: 0, daily_netProfit: 1.35208688924, daily_grossProfit: 1.35448688924, daily_costs: 0.0024, created_at: "2018-06-18" }, { id: 1, daily_netProfit: 1.35208688924, daily_grossProfit: 1.35448688924, daily_costs: 0.0024, created_at: "2018-06-19" }] },
dataSet = obj.productData.map(
({ daily_netProfit, daily_grossProfit, daily_costs, created_at: day }) =>
({ daily_netProfit, daily_grossProfit, daily_costs, day }))
console.info(dataSet).as-console-wrapper { max-height: 100% !important; top: 0; }С остальным синтаксисом для объектов (для новейшего JS) еще короче
var obj = { productData: [{ id: 0, daily_netProfit: 1.35208688924, daily_grossProfit: 1.35448688924, daily_costs: 0.0024, created_at: "2018-06-18" }, { id: 1, daily_netProfit: 1.35208688924, daily_grossProfit: 1.35448688924, daily_costs: 0.0024, created_at: "2018-06-19" }] },
dataSet = obj.productData.map(({ id, created_at: day, ...rest }) => ({ ...rest, day }));
console.info(dataSet);.as-console-wrapper { max-height: 100% !important; top: 0; }Вы создаете массивы, а не объекты. Вместо этого создавайте объекты. Вы можете использовать деструктуризацию параметров, чтобы выбрать нужные вам части, а затем использовать инициализатор объекта для создания нового объекта:
let obj = {
"productData": [{
"id": 0,
"daily_netProfit": 1.35208688924,
"daily_grossProfit": 1.35448688924,
"daily_costs": 0.0024,
"created_at": "2018-06-18"
},
{
"id": 1,
"daily_netProfit": 1.35208688924,
"daily_grossProfit": 1.35448688924,
"daily_costs": 0.0024,
"created_at": "2018-06-19"
}
]
};
let dataSet = obj.productData.map(
({
daily_netProfit,
daily_grossProfit,
daily_costs,
created_at
}) => ({
daily_netProfit,
daily_grossProfit,
daily_costs,
created_at
})
);
console.info(dataSet).as-console-wrapper {
max-height: 100% !important;
}
Почему бы вам просто не создать объект вместо массива, как вам нужно?