复杂的Javascript对象创建和重写问题。未定义错误集

复杂的Javascript对象创建和重写问题。未定义错误集,javascript,object,undefined,Javascript,Object,Undefined,userData数组最初只有一个对象,因此如果jsonData的长度超过一个,则会出现此错误,因为没有定义userData[1]等等 试试这个 userData[i].date = ... 函数reworkInfoData(jsonData){ var userData=[]; 用户数据[0]={ 日期:'', 数据:[] }; 用户数据[0]。数据[0]={ 活动:“”, 时间:“” } var timeVar=新日期(); 对于(var i=0;i

userData数组最初只有一个对象,因此如果jsonData的长度超过一个,则会出现此错误,因为没有定义userData[1]等等

试试这个

userData[i].date = ...
函数reworkInfoData(jsonData){
var userData=[];
用户数据[0]={
日期:'',
数据:[]
};
用户数据[0]。数据[0]={
活动:“”,
时间:“”
}
var timeVar=新日期();
对于(var i=0;i
很多事情都是错的/不好的。请按照您的方式进行练习。
1.代替下面的代码:

function reworkInfoData(jsonData){
  var userData = [];
  userData[0] = {
      date: ' ',
      data: []
  };
  userData[0].data[0] = {
      activity: ' ',
      time: ' '
  }
  var timeVar = new Date();
  for(var i = 0; i < jsonData.length; i++){
      timeVar = new Date(jsonData[i].date);
      if(userData[i]) {
        userData[i].date = timeVar.getFullYear() + '.' + timeVar.getMonth() + 
        '.' + timeVar.getDay();
        for(var k = 0; k < jsonData[i].data.length; k++){
            if(userData[i].data[k]) {
              userData[i].data[k] = jsonData[i].data[k];
            }else {
              userData[i].data.push(jsonData[i].data[k])
            }
        }
      } else {
        var tmp = {};
        tmp.date = timeVar.getFullYear() + '.' + timeVar.getMonth() + 
        '.' + timeVar.getDay();
        for(var k = 0; k < jsonData[i].data.length; k++){
            tmp[i].data.push(jsonData[i].data[k]);
        }
      }
  }
  return UserData;
}
尝试:


2.您正在为(var i=0;i中的jsonData值,但您正在使用迭代器访问userData
userData[i].date
userData.length
小于
jsonData.length
时,此操作将失败。更改逻辑以修复此问题

jsonData
的值是多少?我怀疑数组中的一个项是
null
未定义的
。您正在迭代jsonData,但正在尝试分配给userData。userData只有您在开始时添加的一个元素。@Stifle我从JSON.parse(fileContent)中获取jsonData的值,因此它不能是empy或未定义的。@ste2425那么,创建新对象数组的正确方法是什么呢?
function reworkInfoData(jsonData){
  var userData = [];
  userData[0] = {
      date: ' ',
      data: []
  };
  userData[0].data[0] = {
      activity: ' ',
      time: ' '
  }
  var timeVar = new Date();
  for(var i = 0; i < jsonData.length; i++){
      timeVar = new Date(jsonData[i].date);
      if(userData[i]) {
        userData[i].date = timeVar.getFullYear() + '.' + timeVar.getMonth() + 
        '.' + timeVar.getDay();
        for(var k = 0; k < jsonData[i].data.length; k++){
            if(userData[i].data[k]) {
              userData[i].data[k] = jsonData[i].data[k];
            }else {
              userData[i].data.push(jsonData[i].data[k])
            }
        }
      } else {
        var tmp = {};
        tmp.date = timeVar.getFullYear() + '.' + timeVar.getMonth() + 
        '.' + timeVar.getDay();
        for(var k = 0; k < jsonData[i].data.length; k++){
            tmp[i].data.push(jsonData[i].data[k]);
        }
      }
  }
  return UserData;
}
var userData = [];
userData[0] = {
    date: ' ',
    data: []
};
var userData = [];
userData.push({
    date: ' ',
    data: []
});