Я создаю приложение для опроса, которое должно регистрировать пользователей ip и какой выбор они проголосовали в дополнение к тому, что было, когда они голосовали.Использование array.push дает undefined
Для этого я представил себе создание объекта для каждого «голосования», который включал каждое из этих свойств в качестве свойства, а затем толкание этого объекта в массив вполне соответствовало моим потребностям.
Все работало нормально, пока я не попытался использовать push my object в моем массиве. То, что я в настоящее время говорит, что мой массив не определен.
Что именно происходит? Я попытался использовать индекс и установил параметр голосованияArray [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)
Редактировать:
Из-за большого количества людей, предполагающих, что я объявил, но не создал экземпляр varriable 'voteArray' как массив, и что мои фрагменты не включили все, что я переписал, что мне нужно для удовлетворения этих комментариев и ответов.
Я по-прежнему получаю ту же ошибку и о voteArray.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' является undefined'. То, что говорит ошибка. – vlaz
Да, но почему это не определено? Я объявил это и определяю, не вставляю ли я массив и console.log, я получаю ту же ошибку. –
попытайтесь инициализировать 'voteArray' с начальным значением, например' var voteArray = []; ' –