Javascript 如何循环并将对象值推送到数组?

Javascript 如何循环并将对象值推送到数组?,javascript,Javascript,我有一个类似的json: data: (46) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] Province/State: "Anhui" Country/Region: "Mainland China" Lat: 31.8257 Long: 117.2264 现在数据已经 data: Array(46) 0: {date: "1/22/20", Recovered: 0, Deaths: 0, Confirmed: 1} 1: {date: "1/23/

我有一个类似的json:

data: (46) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
Province/State: "Anhui"
Country/Region: "Mainland China"
Lat: 31.8257
Long: 117.2264
现在
数据
已经

data: Array(46)
0: {date: "1/22/20", Recovered: 0, Deaths: 0, Confirmed: 1}
1: {date: "1/23/20", Recovered: 0, Deaths: 0, Confirmed: 9}
2: {date: "1/24/20", Recovered: 0, Deaths: 0, Confirmed: 15}
3: {date: "1/25/20", Recovered: 0, Deaths: 0, Confirmed: 39}
4: {date: "1/26/20", Recovered: 0, Deaths: 0, Confirmed: 60}
5: {date: "1/27/20", Recovered: 0, Deaths: 0, Confirmed: 70}
6: {date: "1/28/20", Recovered: 0, Deaths: 0, Confirmed: 106}
json中有很多对象,我循环和推送坐标如下:

let coords = [];

getVirusData();

function getVirusData() {
  getAvailableDatasets()
    .then(combineDatasets)
    .then(data => { // It's asynchronous
      coords.push.apply(coords, data.map(item => item.Lat + "," + item.Long));
    }).then(function(entry) {
      for (var a = 0; a < coords.length; a++) {
        var pin = coords[a].split(',');
        var latLng = new google.maps.LatLng(pin[0], pin[1]);
        var marker = new google.maps.Marker({
          position: latLng,
          map: map
        });
      }
    });
  }
让coords=[];
getVirusData();
函数getVirusData(){
getAvailableDatasets()
.然后(组合塔赛)
.then(data=>{//它是异步的
coords.push.apply(coords,data.map(item=>item.Lat+”,“+item.Long));
}).然后(函数(条目){
对于(var a=0;a
这是可行的,但我还需要将每个对象的每个日期推送到一个数组中,我认为应该是一个关联数组tho,因为日期与这些特定坐标相关,并且对每个对象都是如此,而且“确认”、“恢复”和“死亡”应该进入它们自己的数组,但与每个对象相关

所需的输出将是类似于

obj=[“31.8257117.2264”][“22/02/20”,“24/02720”][“恢复1”,“恢复3”]


但我不明白如何才能为每个对象做到这一点,这里有一个工作小提琴,用于根据滑块上的日期和输入数据上的日期属性过滤输入:

let virusData;
让病毒数据拷贝;
getVirusData();
函数getVirusData(){
getAvailableDatasets()
.然后(组合塔赛)
。然后((r)=>{
试一试{
virusData=JSON.Parse(r);
}捕获(e){
virusData=r;
}
initUI(virusData);
})
}
函数initUI(initialDataSet){
函数日期(日期){
返回日期。valueOf();
}
函数tsToDate(ts){
var d=新日期(ts);
返回d.toLocaleDateString(lang{
年份:'数字',
月:“长”,
日期:“数字”
});
}
让dataSetCopy=[];
initialDataSet.forEach(ds=>{
ds.data.forEach(obj=>{
dataSetCopy.push(对象日期)
})
})
dataSetCopy.sort((a,b)=>Date.parse(a)-Date.parse(b));
console.log(dataSetCopy)
让lang=“en US”;
$(“演示4”).IonRange滑块({
皮肤:“大”,
类型:“双”,
网格:是的,
min:dateToTS(新日期(数据集副本[0]),
max:dateToTS(新日期(dataSetCopy[dataSetCopy.length-1]),
起始日期:dateToTS(新日期(数据集副本[3000]),
收件人:dateToTS(新日期(数据集副本[7000]),
美化,
onFinish:函数(数据){
让filterrddata=virusData.map(vd=>{
返回{…vd,
数据:vd.data.filter(obj=>{
objDataTS=Date.parse(obj.Date);
返回(objdatasdata.from)
})
}
})
updateUI(filtererdData)
},
});
updateUI(初始数据集)
}
函数updateUI(数据集){
document.querySelector(“pre”).textContent=JSON.stringify(数据集,null,2)
};
函数getAvailableDatasets(){
返回$.getJSON('https://api.github.com/repos/CSSEGISandData/COVID-19/contents/csse_covid_19_data/csse_covid_19_time_series')
。然后((文件)=>{
回报你的承诺(
files.filter(file=>/^time\u series\u 19-covid-.+\.csv$/.test(file.name))
.map(file=>getDataset(file.download_url))
);
})
.catch(函数(err){
控制台日志(err);
})
}
函数getDataset(url){
返回$.ajax(url)
。然后(csv=>{
常量输出=Papa.parse(csv{
header:true,//使用头作为属性将行转换为对象
dynamicTyping:true,//自动将某些字段转换为数字
});
if(输出数据){
const labelMatches=url.match(/time\u series\u 19-covid-(.+)\.csv$/);
常量标签=标签匹配?标签匹配[1]:“无标题”;
const formatted=output.data.map(区域=>{
常量obj={};
Object.key(区域).forEach(key=>{
如果(/^\d+\/\d+\/\d+$/.test(键)){
obj[键]={
日期:,
[标签]:区域[键]
};
}否则{
obj[键]=区域[键];
}
});
返回obj;
});
返回格式;
}否则{
console.log(output.errors);
}
});
}
功能组合数据集(数据集){
if(datasets.length){
const combined=datasets.reduce((结果,数据集,i)=>{
如果(i==0){
返回结果;
}
dataset.forEach(面积=>{
//寻找具有相同坐标的区域
让existingArea=result.find(a=>a.Lat==area.Lat&&a.Long==area.Long);
如果(!现有区域){
结果:推(面积);
}否则{
const dates=Object.keys(area).filter(key=>/^\d+\/\d+\/\d+$/.test(key));
dates.forEach(date=>existingArea[date]=Object.assign(area[date],existingArea[date]);
}
});
返回结果;
},数据集[0]);
返回组合的.map(区域=>{
常量对象={
数据:[]
};
Object.key(区域).forEach(key=>{
如果(/^\d+\/\d+\/\d+$/.test(键)){
对象数据推送(区域[键]);
}否则{
obj[键]=区域[键];
}
});
返回obj;
});
}否则{
抛出“未找到任何数据集”;
}
}


请单击“编辑”,然后单击“编辑”,然后单击“编辑”[]
创建一个数组,这样您需要该映射中的每个键都位于单个数组中,并且每个索引都指向其他数据索引???@SalehAlmohtaseb yea,看看这个小提琴控制台,我需要每个对象都有自己的键,以便以某种方式可读。目前,我在地图上绘制了标记,但如果我想将每个pin的日期和大小写联系起来,并能够与它们进行交互,该怎么办?@mplungjan看看这把小提琴,我需要每个对象都有自己的键,以便以某种方式可读。目前,我在地图上绘制了标记,但如果我想将每个pin的日期和案例联系起来,该怎么办