Javascript 我在下面的数组对象中有数据,希望转换另一个数组对象格式

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',

我的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',
        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
正是您要求的格式。

您已经试过了吗?如果能直接在这里给我们一些你的测试,那就太好了