Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对对象及其值进行分组?_Javascript - Fatal编程技术网

Javascript 如何对对象及其值进行分组?

Javascript 如何对对象及其值进行分组?,javascript,Javascript,我期待着这样的事情: 0: Province_State: "Alabama", lat: 45.0732745, long: 7.680687483, 0 data: 0 date: "2/24/20", positive: 329, negative: 10790, pending: null, hospitalizedCurrently: 42, hospitalizedCumulative: 3

我期待着这样的事情:

0:
  Province_State: "Alabama", 
  lat: 45.0732745,
  long: 7.680687483,
  0 data:
   0 date: "2/24/20",
       positive: 329,
       negative: 10790,
       pending: null,
       hospitalizedCurrently: 42,
       hospitalizedCumulative: 36...
   1 date: "2/25/20",
       positive: 329,
       negative: 10790,
       pending: null,
       hospitalizedCurrently: 42,
       hospitalizedCumulative: 36..
使用此选项:

const formatted = data.map(area => {
return {
    "state": area["Province_State"],
    "lat": area["lat"],
    "long": area["long"],
    "data": Object.assign({},Object.keys(area)
    .map(date => ({ date: area[date], Deaths: area[date], Confirmed: area[date], Recovered: area[date], Active: area[date], 
        FIPS: area[date], Incident_Rate: area[date], People_Tested: area[date], People_Hospitalized: area[date],
        Mortality_Rate: area[date], UID: area[date], ISO3: area[date], Testing_Rate: area[date],
        Hospitalization_Rate: area[date]  })))
    }
});
但是分组错误

data:
0: {date: "Alabama", Deaths: "Alabama", Confirmed: "Alabama", Recovered: "Alabama", Active: "Alabama", …}
1: {date: "US", Deaths: "US", Confirmed: "US", Recovered: "US", Active: "US", …}
2: {date: "2020-05-10 02:32:34", Deaths: "2020-05-10 02:32:34", Confirmed: "2020-05-10 02:32:34", Recovered: "2020-05-10 02:32:34", Active: "2020-05-10 02:32:34", …}
3: {date: "32.3182", Deaths: "32.3182", Confirmed: "32.3182", Recovered: "32.3182", Active: "32.3182", …}
4: {date: "-86.9023", Deaths: "-86.9023", Confirmed: "-86.9023", Recovered: "-86.9023", Active: "-86.9023", …}
5: {date: "9668", Deaths: "9668", Confirmed: "9668", Recovered: "9668", Active: "9668", …}
6: {date: "390", Deaths: "390", Confirmed: "390", Recovered: "390", Active: "390", …}
7: {date: "", Deaths: "", Confirmed: "", Recovered: "", Active: "", …}
8: {date: "9278.0", Deaths: "9278.0", Confirmed: "9278.0", Recovered: "9278.0", Active: "9278.0", …}
9: {date: "1", Deaths: "1", Confirmed: "1", Recovered: "1", Active: "1", …}
10: {date: "206.1892167816866", Deaths: "206.1892167816866", Confirmed: "206.1892167816866", Recovered: "206.1892167816866", Active: "206.1892167816866", …}
11: {date: "125494", Deaths: "125494", Confirmed: "125494", Recovered: "125494", Active: "125494", …}
12: {date: "1228", Deaths: "1228", Confirmed: "1228", Recovered: "1228", Active: "1228", …}
13: {date: "4.033926354985519", Deaths: "4.033926354985519", Confirmed: "4.033926354985519", Recovered: "4.033926354985519", Active: "4.033926354985519", …}
14: {date: "84000001", Deaths: "84000001", Confirmed: "84000001", Recovered: "84000001", Active: "84000001", …}
15: {date: "USA", Deaths: "USA", Confirmed: "USA", Recovered: "USA", Active: "USA", …}
16: {date: "2676.4076924701053", Deaths: "2676.4076924701053", Confirmed: "2676.4076924701053", Recovered: "2676.4076924701053", Active: "2676.4076924701053", …}
17: {date: "12.701696317749276", Deaths: "12.701696317749276", Confirmed: "12.701696317749276", Recovered: "12.701696317749276", Active: "12.701696317749276", …}
我哪里做错了

更新

还尝试:

        const formatted = Object.assign(
            {},data.map(
                area => {
                    return {
                        "state": area["state"],
                        "lat": area["lat"],
                        "long": area["long"],
                        "data": Object.assign({},Object.keys(area)
                            .map(
                                date => ({ 
                                    date: area[date], Deaths: area[date], Confirmed: area[date], Recovered: area[date], Active: area[date], 
                                    FIPS: area[date], Incident_Rate: area[date], People_Tested: area[date], People_Hospitalized: area[date],
                                    Mortality_Rate: area[date], UID: area[date], ISO3: area[date], Testing_Rate: area[date],
                                    Hospitalization_Rate: area[date]                       
                                })
                            )
                        )
                    };
                }
            )
        );
更新两个

样本数据:

var data =[
    {
        "Province_State": "Alabama",
        "Country_Region": "US",
        "date": "2020-05-10 02:32:34",
        "lat": "32.3182",
        "long": "-86.9023",
        "Confirmed": "9668",
        "Deaths": "390",
        "Recovered": "",
        "Active": "9278.0",
        "FIPS": "1",
        "Incident_Rate": "206.1892167816866",
        "People_Tested": "125494",
        "People_Hospitalized": "1228",
        "Mortality_Rate": "4.033926354985519",
        "UID": "84000001",
        "ISO3": "USA",
        "Testing_Rate": "2676.4076924701053",
        "Hospitalization_Rate": "12.701696317749276"
    },
    {
        "Province_State": "Alaska",
        "Country_Region": "US",
        "date": "2020-05-10 02:32:34",
        "lat": "61.3707",
        "long": "-152.4044",
        "Confirmed": "378",
        "Deaths": "10",
        "Recovered": "318",
        "Active": "50.0",
        "FIPS": "2",
        "Incident_Rate": "63.23724506439994",
        "People_Tested": "26449",
        "People_Hospitalized": "",
        "Mortality_Rate": "2.6455026455026456",
        "UID": "84000002",
        "ISO3": "USA",
        "Testing_Rate": "4424.766917217762",
        "Hospitalization_Rate": ""
    },
    {
        "Province_State": "American Samoa",
        "Country_Region": "US",
        "date": "2020-05-10 02:32:34",
        "lat": "-14.270999999999999",
        "long": "-170.132",
        "Confirmed": "0",
        "Deaths": "0",
        "Recovered": "",
        "Active": "0.0",
        "FIPS": "60",
        "Incident_Rate": "0.0",
        "People_Tested": "83",
        "People_Hospitalized": "",
        "Mortality_Rate": "",
        "UID": "16",
        "ISO3": "ASM",
        "Testing_Rate": "149.17057565464316",
        "Hospitalization_Rate": ""
    }...

下面是使用
reduce
函数创建
数据
属性的简化版本


   const formatted = data.map(
                area => {
                    return {
                        "state": area["Province_State"],
                        "lat": area["lat"],
                        "long": area["long"],
                        "data": Object.keys(area).reduce( (prev, next) => { 
                          prev[next]= area[next];                         
                        return prev;
                        } , {})
                    };
                }
        );
您现在有了一个代码,因为这行代码,您不需要显式地编写所有属性名称

Object.keys(area).reduce( (prev, next) => { 
                          prev[next]= area[next];                         
                        return prev;
                        } , {})
我基本上是创建一个新对象,然后动态创建属性,因为您可以在
object.keys(area)
中获取属性名称


这里有一个演示链接

使用hashmap将对象数据收集到property.data下的一个数组中,该数组基于相同的省/州。使用reduce。
假定省/州是唯一的组标识符。将省/州的用法替换为要用于分组的任何内容

console.log(
Object.values(//放弃键
data.REDUCT((acc,{省州,纬度,经度,…rest})=>((
//如果[省\州]已存在,则将对象推送到.data数组上
acc[省州]&&acc[省州].data.push(rest)||
//else为键[省\州]添加新对象
(acc[省州]={省州,纬度,经度,数据:[rest]})
),acc),{})
)
)

var数据=[
{
“省州”:“阿拉巴马州”,
“国家/地区”:“美国”,
“日期”:“2020-05-10 02:32:34”,
“lat”:“32.3182”,
“长”:“-86.9023”,
“已确认”:“9668”,
“死亡”:“390”,
“已恢复”:“,
“活动”:“9278.0”,
“FIPS”:“1”,
“事故率”:“206.1892167816866”,
“受测人员”:“125494”,
“住院人员”:“1228”,
“死亡率”:“4.033926354985519”,
“UID”:“84000001”,
“ISO3”:“美国”,
“测试率”:“2676.4076924701053”,
“住院率”:“12.701696317749276”
},
{
“省州”:“阿拉斯加”,
“国家/地区”:“美国”,
“日期”:“2020-05-10 02:32:34”,
“lat”:“61.3707”,
“长”:“-152.4044”,
“确认”:“378”,
“死亡”:“10”,
“已恢复”:“318”,
“活动”:“50.0”,
“FIPS”:“2”,
“事故率”:“63.23724506439994”,
“受测人员”:“26449”,
“住院人员”:“,
“死亡率”:“2.6455026455026456”,
“UID”:“84000002”,
“ISO3”:“美国”,
“测试率”:“4424.766917217762”,
“住院率”:”
},
{
“省州”:“美属萨摩亚”,
“国家/地区”:“美国”,
“日期”:“2020-05-10 02:32:34”,
“lat”:“-14.2709999999999”,
“长”:“-170.132”,
“已确认”:“0”,
“死亡”:“0”,
“已恢复”:“,
“活动”:“0.0”,
“FIPS”:“60”,
“事故率”:“0.0”,
“受测人员”:“83”,
“住院人员”:“,
“死亡率”:“,
“UID”:“16”,
“ISO3”:“ASM”,
“测试率”:“149.17057565464316”,
“住院率”:”
},
{
“省州”:“阿拉巴马州”,
“国家/地区”:“美国”,
“日期”:“2020-05-1022:32:40”,
“lat”:“12.3182”,
“长”:“-86.9023”,
“已确认”:“9668”,
“死亡”:“390”,
“已恢复”:“,
“活动”:“9278.0”,
“FIPS”:“1”,
“事故率”:“206.1892167816866”,
“受测人员”:“125494”,
“住院人员”:“1228”,
“死亡率”:“4.033926354985519”,
“UID”:“84000001”,
“ISO3”:“美国”,
“测试率”:“2676.4076924701053”,
“住院率”:“12.701696317749276”
}
]

area的数据结构是什么样的,我们能得到一个片段吗?对象。关键点(区域)可能有点偏了。@jhamPac当然,我已经用一个示例数据更新了这个问题OK,ty。现在回到你所期待的。你能澄清一下预期的产出吗?您希望每个状态都有一个数字键控对象对吗?0: {...}. 或者你想要每个州都有一个数据字段?@jhamPac是的,我们已经根据州划分了很多日期,我需要将所有值分组在一个日期组下,同时保留州名称和坐标,希望如此helps@jhamPac抱歉,更新了任务,粘贴了错误的预期结果。我正在处理数据。。。