Javascript 我在下面的数组对象中有数据,希望转换另一个数组对象格式
我的API响应-Javascript 我在下面的数组对象中有数据,希望转换另一个数组对象格式,javascript,arrays,typescript,javascript-objects,Javascript,Arrays,Typescript,Javascript Objects,我的API响应- let data = [ { date: '2021-04-27', formatted_date: 'Apr 27', location: [ { date: '2021-04-27', formatted_date: 'Apr 27', country: 'India', total_views: 6, formatted_views: '6',
let data = [
{
date: '2021-04-27',
formatted_date: 'Apr 27',
location: [
{
date: '2021-04-27',
formatted_date: 'Apr 27',
country: 'India',
total_views: 6,
formatted_views: '6',
total_watch_duration: 115,
formatted_watch_duration: '0h 1m',
},
{
date: '2021-04-27',
formatted_date: 'Apr 27',
country: 'USA',
total_views: 16,
formatted_views: '16',
total_watch_duration: 1195,
formatted_watch_duration: '0h 1m',
},
{
date: '2021-04-27',
formatted_date: 'Apr 27',
country: 'Canada',
total_views: 16,
formatted_views: '10',
total_watch_duration: 1195,
formatted_watch_duration: '0h 1m',
},
],
},
{
date: '2021-04-28',
formatted_date: 'Apr 28',
location: [
{
date: '2021-04-28',
formatted_date: 'Apr 28',
country: 'India',
total_views: 1,
formatted_views: '1',
total_watch_duration: 21,
formatted_watch_duration: '0h 0m',
},
{
date: '2021-04-28',
formatted_date: 'Apr 27',
country: 'UK',
total_views: 16,
formatted_views: '16',
total_watch_duration: 1195,
formatted_watch_duration: '0h 1m',
},
{
date: '2021-04-28',
formatted_date: 'Apr 27',
country: 'China',
total_views: 16,
formatted_views: '10',
total_watch_duration: 1195,
formatted_watch_duration: '0h 1m',
},
],
},
{
date: '2021-04-29',
formatted_date: 'Apr 29',
location: [
{
date: '2021-04-29',
formatted_date: 'Apr 29',
country: 'India',
total_views: 2,
formatted_views: '2',
total_watch_duration: 37,
formatted_watch_duration: '0h 0m',
},
],
},
{
date: '2021-04-30',
formatted_date: 'Apr 30',
location: [
{
date: '2021-04-30',
formatted_date: 'Apr 30',
country: 'India',
total_views: 1,
formatted_views: '1',
total_watch_duration: 0,
formatted_watch_duration: '0',
},
{
date: '2021-04-30',
formatted_date: 'Apr 27',
country: 'USA',
total_views: 16,
formatted_views: '16',
total_watch_duration: 1195,
formatted_watch_duration: '0h 1m',
},
{
date: '2021-04-30',
formatted_date: 'Apr 27',
country: 'Canada',
total_views: 16,
formatted_views: '10',
total_watch_duration: 1195,
formatted_watch_duration: '0h 1m',
},
],
},
{
date: '2021-05-01',
formatted_date: 'May 01',
location: [],
},
{
date: '2021-05-02',
formatted_date: 'May 02',
location: [],
},
{
date: '2021-05-03',
formatted_date: 'May 03',
location: [],
},
{
date: '2021-05-04',
formatted_date: 'May 04',
location: [
{
date: '2021-05-04',
formatted_date: 'May 04',
country: 'India',
total_views: 4,
formatted_views: '4',
total_watch_duration: 584,
formatted_watch_duration: '0h 9m',
},
],
},
{
date: '2021-05-05',
formatted_date: 'May 05',
location: [],
},
];
我想在下面的甲酸如果位置含空然后考虑0。假设数据的总视图值
this.geographySeriesData = [
{
name: 'India',
data: [500, 555, 444, 777, 877, 9944, 750],
},
{
name: 'USA',
data: [10, 1000, 1200, 1000, 1200, 1000, 500],
}
];
您可以使用此代码进行转换。它不是最优的,但非常简单易懂。所需的数据存储在finalResult变量中
const result = {};
const locations = data.map(el => el.location).flat();
locations.forEach(loc => {
result[loc.country] = [];
});
locations.forEach(loc => {
result[loc.country].push(loc.total_views);
});
const finalResult = Object.keys(result).map(key => ({ name: key, data: result[key]}));
您可以实现这样的精确格式
countryList = []
countryObject = {}
data.forEach((d) => {
d.location.forEach((loc) => {
if(loc.country in countryObject){
countryViewsList = countryObject[loc.country]
countryViewsList.push(loc.total_views)
countryObject[loc.country] = countryViewsList
} else {
countryObject = Object.assign(countryObject, {[loc.country]: [loc.total_views]})
}
})
})
Object.keys(countryObject).forEach((k)=>{
countryList.push({
name: k,
data: countryObject[k]
})
})
countryList
正是您要求的格式。您已经试过了吗?如果能直接在这里给我们一些你的测试,那就太好了