Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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,我使用以下方法对一些数据进行分组: const formatted = data.map( area => { return { "state": area["Province_State"], "lat": area["lat"], "long": area["long"], "data": Object.keys(area).reduce( (prev, next)

我使用以下方法对一些数据进行分组:

const formatted = data.map(
    area => {
        return {
            "state": area["Province_State"],
            "lat": area["lat"],
            "long": area["long"],
            "data": Object.keys(area).reduce( (prev, next) => { 
            if(next === 'date' ) {
                // do something 
                prev[next] = removeTime( area[next]) 
            } else {
            prev[next]= area[next];                         
            }
            return prev;
            } , {})
        };
    }
);
但我需要的格式是错误的

产生一系列如下数据:

{state: "Alabama", ID: "c6d6ee4b-89d3-4634-807d-340a2b35d6a4", long: -86, lat: 32, name: "Alabama", …}
ID: "c6d6ee4b-89d3-4634-807d-340a2b35d6a4"
data:
Active: "3470"
Confirmed: "3563"
Country_Region: "US"
Deaths: "93"
FIPS: "1"
Hospitalization_Rate: "12.26494527"
ISO3: "USA"
Incident_Rate: "75.98802021"
Mortality_Rate: "2.610159978"
People_Hospitalized: "437"
People_Tested: "21583"
Province_State: "Alabama"
Recovered: ""
Testing_Rate: "460.3001516"
UID: "84000001"
date: "2020-04-12"
lat: "32.3182"
long: "-86.9023"
__proto__: Object
lat: 32
long: -86
name: "Alabama"
state: "Alabama"
但是,由于每个州的每个
日期都有更多的数据,因此我需要
数据
下的所有日期,以便如下所示:

State: "Alabama"
ID: 2
Lat: 41.1533
Long: 20.1683
Province/State: ""
data: Array(109)
[0 … 99]
0: {date: "1/22/20", Confirmed: 0, Deaths: 0, Recovered: 0}
1: {date: "1/23/20", Confirmed: 0, Deaths: 0, Recovered: 0}
2: {date: "1/24/20", Confirmed: 0, Deaths: 0, Recovered: 0}

我使用的代码并不是将所有日期分组在
数据下,而是提供了一系列单独的OBJ

看起来您希望按状态分组,而不是按日期分组,因此您实际上应该使用,但逻辑应该略有不同:

const数据=[{
“省州”:“CA”,
lat:1.1,
长:1.1,
日期:“1/22/20 12:00”,
确认:0,
死亡人数:0,
恢复:0,
}, {
“省州”:“CA”,
lat:1.2,
长:1.2,
日期:“1/23/20 12:00”,
确认:1,,
死亡人数:1,
恢复:1,,
}, {
“省州”:“洛杉矶”,
lat:1.3,
长:1.3,
日期:“1/22/20 12:00”,
确认:2,
死亡人数:2人,
恢复:2,
}];
const formatted=data.reduce((合并,条目)=>{
常数{
//这些属性在每个状态下仅显示一次:
拉特,
长的
省(州):州,,
//其他任何内容都会在该状态条目的“数据”字段中分组:
休息
}=入口;
//您可以在此处修改“日期”字段:
rest.date=rest.date.split(“”)[0];
if(合并后的hasOwnProperty(州)){
//如果我们已经为此状态添加了一个条目,只需将其他属性推送到“data”:
合并的[state].data.push(rest);
}否则{
//否则,请添加此状态的条目:
合并的[state]={state,lat,long,data:[rest]};
}  
返回合并;
}, { });

console.log(格式化)分组考虑使用.@ TADMAN,我对这件事真的生气了几个小时,你有一个解决方案可以放在一个答案中吗?你可能首先需要<代码> map < /Cord>,然后使用<代码>组减少/<代码>。我通常不会这么做,我只是用。@tadman我很确定我就快到了,但你能不能显示一些你正在映射的初始数据?最后一点,我用这个来格式化日期,因为我们在日期上也有时间,我不需要它,但不确定将其放在何处,以便立即添加日期
const removeTime=time=>time.split(“”)[0]
@rob.m刚刚添加了,您可以在
if else
块之前更新
rest
中所需的任何内容。@rob.m您只需在
for
循环上方定义
const merged={}
,并替换
.reduce()
以保持相同的逻辑。唯一需要更改的是删除
返回合并的
。然后
console.log(格式化)
变成
console.log(合并)
。让我试试,或者你能粘贴一个例子吗?我仍然不知道如何循环objYou可以执行
Object.values(合并)