Javascript TypeError:无法在两个getJSON函数之间读取值的属性

Javascript TypeError:无法在两个getJSON函数之间读取值的属性,javascript,jquery,arrays,json,typeerror,Javascript,Jquery,Arrays,Json,Typeerror,当我的2个json数组的长度相同时,我没有得到错误。但当它们不是时,我会得到一个类型错误:undefined的connt-read属性 JSON: json1: [ { “日期”:“2019-07-05”, “x”:1246567, “y”:598045 }, { “日期”:“2019-07-06”, “x”:1021607, “y”:452854 }, { “日期”:“2019-07-07”, “x”:1031607, “y”:467854 } ] json2: [ { “日期”:“2019

当我的2个json数组的长度相同时,我没有得到错误。但当它们不是时,我会得到一个
类型错误:undefined的connt-read属性

JSON:

json1:

[
{
“日期”:“2019-07-05”,
“x”:1246567,
“y”:598045
},
{
“日期”:“2019-07-06”,
“x”:1021607,
“y”:452854
},
{
“日期”:“2019-07-07”,
“x”:1031607,
“y”:467854
}
]
json2:

[
{
“日期”:“2019-07-05”,
“v”:3132769,
“pv”:6643094
},
{
“日期”:“2019-07-06”,
“v”:2643611,
“pv”:6059584
}
]
JavaScript

$.getJSON(json1, result => {
    result.forEach((elem, i, array) => {
       $('#x').text(elem.x);                            
       $('#y').text(elem.y);
});

$.getJSON(json2, result => {
    result.forEach((elem, i, array) => {
    let yo = 0;
    if ((elem.date.indexOf(json[i].date) !== -1)) {
       yo = json[i].x/elem.v)
       $('#v').text(elem.v);                            
       $('#pv').text(elem.pv);
       $('#vpv').text(yo);  
    } 
   });
  });
当数组的长度相互匹配时,一切都正常。但当一个比另一个长时,我会

TypeError: Cannot read property x of undefined (at json[i].x). 
我甚至添加了条件

if ((elem.date.indexOf(json[i].date) !== -1)). 

我想这会解决这个问题。但我仍然得到了错误。如何解决此问题?

您需要处理异步调用,将它们视为异步调用。因为您使用的是jQuery,所以可以使用
when()

现在,你的逻辑在寻找匹配项方面存在缺陷。就我个人而言,我会在处理数据之前将它们结合起来

const data1=[{
“日期”:“2019-07-05”,
“x”:1246567,
“y”:598045
},
{
“日期”:“2019-07-06”,
“x”:1021607,
“y”:452854
},
{
“日期”:“2019-07-07”,
“x”:1031607,
“y”:467854
}
]
常数数据2=[{
“日期”:“2019-07-05”,
“v”:3132769,
“pv”:6643094
},
{
“日期”:“2019-07-06”,
“v”:2643611,
“pv”:6059584
}
]
const dataPoints=data1.reduce((对象,项)=>{
obj[项目日期]=项目
返回obj
}, {})
data2.forEach(项目=>{
//数据点[item.date]=数据点[item.date]| |{}
//分配(数据点[item.date],item)
数据点[item.date]={…(数据点[item.date]|{}),
项目
}
})
Object.values(数据点).forEach(项=>{
控制台组(项目日期)
if(item.x!==未定义和&item.v!==未定义){
控制台日志(项.x/项.v);
}否则{
console.log(“无法进行计算”)
}
console.groupEnd(item.date)

})
我看不出您在哪里定义“json”,并试图使用json[I]。你确定你不是有意要做json2[i]?我希望只有当json1的日期与json2的日期匹配时才会发生
yo=json[i].x/elem.v)
json2@ChrisShort,我想在json2中使用json1中的x来执行yo=json[I].x/elem.v)json1和json2到底是什么?您将它们用于
getJSON
,这是一个ajax请求,因此我希望它们是字符串……如果
json
未定义,则不会。同样,这看起来像是一个异步问题。
$.when(
  $.getJSON(url1),
  $.getJSON(url2)
).done(function(data1, data2) {
  console.log(data1[0]);
  console.log(data2[0]);
});