gpt4 book ai didi

javascript - 使用 array.push 产生 undefined

转载 作者:行者123 更新时间:2023-11-30 15:49:05 25 4
gpt4 key购买 nike

我正在创建一个投票应用程序,它应该记录用户的 ip,以及他们投票的选择以及他们投票的时间。

为此,我设想为每个“投票”创建一个对象,将其中的每一个都作为一个属性包含在内,然后将该对象放入一个数组中,这将非常适合我的需要。

在我尝试使用将我的对象推送到我的数组之前,一切都运行良好。我目前所说的是我的数组未定义。

到底发生了什么?我尝试使用索引并将 votingArray[i] 设置为对象,但这也给出了未定义的错误。

这是我的代码:

    //Vote for the pet passed into by user
function vote(pet, time){
linkService.incrementCount(pet);
trackVote(pet, time);

res.render('vote', {
pet: pet
});
}

var votingArray = [];

function trackVote(pet, time) {

var voteObject = {
time: time,
pet: pet,
ip: req.ip
};

console.log(voteObject);
votingArray.push(voteObject);
console.log(votingArray);

}

function showResults(){
res.render('results', {
votingArray: votingArray
});
}

这是我的控制台中的错误:

(第 69 行是 'votingArray.push(voteObject);')

Express started on http://localhost:8080; press Ctrl-C to terminate.
{ time: 1474584882143, pet: 'scout', ip: '::ffff:10.240.1.15' }
TypeError: Cannot read property 'push' of undefined
at trackVote (/home/ubuntu/workspace/Projects/projectTwo/app.js:69:14)
at vote (/home/ubuntu/workspace/Projects/projectTwo/app.js:51:6)
at /home/ubuntu/workspace/Projects/projectTwo/app.js:43:6
at Layer.handle [as handle_request] (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/layer.js:95:5)
at next (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/layer.js:95:5)
at /home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/index.js:277:22
at param (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/index.js:349:14)
at param (/home/ubuntu/workspace/Projects/projectTwo/node_modules/express/lib/router/index.js:365:14)

编辑:

由于很多人建议我已经声明但没有将变量“votingArray”实例化为数组,而且我的代码片段没有包含所有内容,所以我重写了我必须满足这些评论和答案的内容.

关于 votingArray.push,我仍然遇到同样的错误。

这是我的新代码:

var votingArray = [];

//Vote for the pet passed into by user
function vote(pet, time){
linkService.incrementCount(pet);

var votingObject =
{
ip: req.ip,
pet: pet,
timecode: time
};

votingArray.push(votingObject);

res.render('vote', {
pet: pet
});
}


function showResults(){
res.render('results', {
votingArray: votingArray
});
}

最佳答案

您的变量 votingArray 未初始化。如果你想让它成为一个数组,你必须替换这行

var votingArray;

var votingArray = []; // Empty array instance

关于javascript - 使用 array.push 产生 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com