使用数组.Push输出未定义
Using array.push yields undefined
我正在创建一个投票应用程序,应该记录用户的ip,以及他们投票的选择,以及他们投票的时间。
为此,我想象为每个'vote'创建一个对象,其中每个'vote'都包含一个属性,然后将该对象放入一个数组中,这将非常适合我的需要。
一切都运行良好,直到我试图使用push我的对象到我的数组。我现在说的是我的数组是undefined
到底发生了什么?我尝试使用索引并将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
初始化数组或将其传递给函数,而不是在文件中使用浮动var。在你的问题中,我们也看不到where trackVote被调用的用法,但这是我的建议。
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 trackVote(pet, time) {
var votingArray = [];
var voteObject = {
time: time,
pet: pet,
ip: req.ip
};
console.log(voteObject);
votingArray.push(voteObject);
console.log(votingArray);
}
或
function trackVote(pet, time, votingArray) {
var voteObject = {
time: time,
pet: pet,
ip: req.ip
};
console.log(voteObject);
votingArray.push(voteObject);
console.log(votingArray);
}
相关文章:
- Node.js/Express未输出console.log,highcharts.js给出未定义的错误
- JS函数只返回未定义的数据,但alert输出正确的数据
- '未定义'当需要模块时输出
- 具有中文字符但输出的JSON.parse数据变为“;未定义”;
- 为什么我的输出未定义
- IE9中的有效输出,但IE7/IE8中的未定义输出
- 当在 Javascript 中使用许多 for 循环时,输出是未定义的
- 它无法正常工作,它输出未定义
- Vue.js 使用 Vuex 和自定义组件,@click方法输出未定义
- 带有Ajax的JavaScript和HTTP请求输出未定义的显示2
- 对象实例为其输出“未定义”'s原型'的属性.为什么?
- 输出未定义
- FileReader输出未定义
- 使用数组.Push输出未定义
- 从函数调用返回对象的函数输出未定义
- js部分/子模板输出未定义
- Angular UI掩码格式化输出未定义
- jsPdf输出未定义
- 对变量的访问输出未定义
- 为什么输出未定义