JavaScript-对象未添加到数组中

JavaScript-对象未添加到数组中,javascript,arrays,object,Javascript,Arrays,Object,仅供参考:再次感谢您帮助一位尝试自学的新手 我正在尝试重新创建从会话存储中解析出来的数组 var entries = JSON.parse(sessionStorage.getItem('entries')); console.log(entries); var stDrivArray = JSON.parse(sessionStorage.getItem('entrynames')); //retrieve from storage var stDrivArray2 = $.makeArray

仅供参考:再次感谢您帮助一位尝试自学的新手

我正在尝试重新创建从会话存储中解析出来的数组

var entries = JSON.parse(sessionStorage.getItem('entries'));
console.log(entries);
var stDrivArray = JSON.parse(sessionStorage.getItem('entrynames')); //retrieve from storage
var stDrivArray2 = $.makeArray(stDrivArray); //turn into an array, but gives each entry in the array the name "object". They need to become "Driver"

//this is the attempt to make them become Drivers
for(var i=0; i<stDrivArray2.length; i++){
    console.log(stDrivArray2[i]);
    var draw2=stDrivArray2[i].draw;
    var name2=stDrivArray2[i].name;
    var name3 = "."+"driver"+stDrivArray2[i].draw;
    Driver[name3] = new Driver(draw2, name2);
    console.log(Driver[name3]);
    //DrivArray.push(Driver[name3]);
    DrivArray[DrivArray.length]=Driver[name3];
};
console.log(DrivArray);
但是,它会为脚本中的每个驱动程序打印一个对象!只是这些值没有定义。这似乎很奇怪,因为对象的创建是正确的,但是由于某些原因,值没有正确地添加到数组中的键中。我希望我使用了正确的词汇表

这特别奇怪,因为我使用完全相同的技术将相同的对象添加到上一页的相同数组中,因此需要从会话存储中存储和检索,并且工作正常

想法


再次感谢。

我真的不知道你想要的是哪一部分

但是替换

Driver[name3] = new Driver(draw2, name2);
console.log(Driver[name3]);
//DrivArray.push(Driver[name3]);
DrivArray[DrivArray.length]=Driver[name3]


它应该会起作用

这是我想出的解决方案。阵列现在正在正确地打印到控制台

    for(var i=0; i<stDrivArray2.length; i++){
    console.log(stDrivArray2[i]);
    var draw2=stDrivArray2[i].draw;
    var name2=stDrivArray2[i].name;
    var name3 = "."+"driver"+stDrivArray2[i].draw;
    Driver[name3] = new Driver(draw2, name2, 0, 0);
    console.log(Driver[name3]);
    //DrivArray.push(Driver[name3]);
    DrivArray[DrivArray.length]=Driver[name3];
    //DrivArray[] = new Driver(Draw3, name2);
};
console.log(DrivArray);

}

Driver[name3]=新的Driverdraw2,name2-你为什么一开始就把它放在一个未定义的对象上?我使用了这篇文章推荐给我的相同格式:[link]它工作得很好,但我承认我不知道为什么。它不一样。我想说,我甚至不明白你怎么能从这个答案中想到司机的名字。我强烈建议您在继续之前先学习JS基础知识。它正在创建驱动程序对象-它正在正确地打印到我脚本的其他地方的控制台。在深入研究更复杂的主题(如构造函数)之前,请先学习如何使用JS变量。这给了我一个未捕获的SyntaxError错误:意外标记]@DavidDubczak他们试图学习编程的方式不起作用,也不会导致成为开发人员。
DrivArray[DrivArray.length]= new Driver(draw2, name2);
    for(var i=0; i<stDrivArray2.length; i++){
    console.log(stDrivArray2[i]);
    var draw2=stDrivArray2[i].draw;
    var name2=stDrivArray2[i].name;
    var name3 = "."+"driver"+stDrivArray2[i].draw;
    Driver[name3] = new Driver(draw2, name2, 0, 0);
    console.log(Driver[name3]);
    //DrivArray.push(Driver[name3]);
    DrivArray[DrivArray.length]=Driver[name3];
    //DrivArray[] = new Driver(Draw3, name2);
};
console.log(DrivArray);
function Driver(draw, name, points, order) {
this.draw = draw;
this.name = name;
this.points = points;
this.order = order;