[英]Javascript object returns undefined
var movies =
[
{name: "In Bruges", rating:"4.7", seen:false},
{name: "Frozen", rating: "4.5", seen:true},
{name: "Lion King", rating:"5", seen:true},
]
for (var i = 0; i < movies.length; i++) {
var result = "You have ";
if(movies.seen === true){
result += "watched ";
}
else{
result += "not seen ";
}
result += "\"" + movies.name + "\" - ";
result += movies.rating + " stars"
console.log(result)
};
You have not seen "undefined" - undefined stars is the result in chrome however you should see You have seen/not seen "movie name" - "rating" stars.
我需要使用for循环来打印出我看过的每部电影并对其进行评级,以及是否看过电影。 问题是为什么它没有定义? 代码是否应该看到movie.rating并在其中替换值? 有人可以检查我的代码并为我的for循环提供帮助吗?
movies
是一个数组movies
movies.seen
无法使用movies[i].seen
和其他属性一样明智
将movies.seen
, movies.rating
和movies.name
更改为movies.seen
movies[i].seen
, movies[i].seen
movies[i].rating
和movies[i].rating
movies[i].name
。
使用索引访问数组的项目; 例如movies[i]
:
for (var i = 0; i < movies.length; i++) {
var result = "You have ";
if(movies[i].seen === true){
result += "watched ";
}
else{
result += "not seen ";
}
result += "\"" + movies[i].name + "\" - ";
result += movies[i].rating + " stars"
console.log(result)
}
或者,您可以将数组项存储在变量中,然后像这样使用它:
for (var i = 0; i < movies.length; i++) {
var movie = movies[i];
var result = "You have ";
if (movie.seen) {
result += "watched ";
}
else {
result += "not seen ";
}
result += '"' + movie.name + '" - ';
result += movie.rating + " stars";
console.log(result);
}
这是一个工作正常的柱塞,供您查看它的正常工作。 :)
var movies =
[
{name: "In Bruges", rating:"4.7", seen:false},
{name: "Frozen", rating: "4.5", seen:true},
{name: "Lion King", rating:"5", seen:true},
]
for (var i = 0; i < movies.length; i++) {
var result = "You have ";
if(movies[i].seen === true){
result += "watched ";
}
else{
result += "not seen ";
}
result += "\"" + movies[i].name + "\" - ";
result += movies[i].rating + " stars"
alert(result)
}
您试图访问的电影的属性seem
, name
和rating
,但是电影有3个对象,索引从0到2。
您正在循环中使用影片,而影片不包含这些属性。 而且在迭代数组时使用forEach循环始终是安全的
做类似的事情
movies.forEach(function(movie){
var result = "You have ";
if(movie.seen === true){
result += "watched ";
}
else{
result += "not seen ";
}
result += movie.name + " - ";
result += movie.rating + " stars";
console.log(result);
});
我建议使用其他方法迭代数组,并检查是否已看过电影。
var movies = [ { name: "In Bruges", rating: "4.7", seen: false }, { name: "Frozen", rating: "4.5", seen: true }, { name: "Lion King", rating: "5", seen: true }, ]; movies.forEach(function (movie) { var result = "You have "; result += movie.seen ? "watched " : "not seen "; result += "\\"" + movie.name + "\\" - "; result += movie.rating + " stars" document.write(result + '<br>'); });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.