首页 > 解决方案 > For Loop 没有运行可汗学院项目:书架

问题描述

“这个程序只显示一本书。制作一组书籍(至少其中两本),并使用循环显示其中的一行。”

我想使用 for 循环在数组中绘制另一本书。在当前状态下,i 保持为 0,必须手动设置为 1 才能绘制下一本书。

var book = [
{title: "I Know Why the Caged Bird Sings",
stars: 4,
like:false},
{title: "The Old Man and the Sea",
stars: 5,
like:true}
];

// draw shelf
for (var s =1; s<4; s++) {
fill(173, 117, 33);
rect(0, s*120, width, 10);
}

// draw one book
for (var i = 0; i<book.length; i++){
var book = book[i]; //specifying the array
fill(214, 255, 219);
rect(i*97, 20, 90, 100);
fill(0, 0, 0);
text(book.title, i*97, 29, 70, 100);
for (var rating = 0; rating < book.stars; rating++) {
    image(getImage("cute/Star"),i*100+ rating * 19, 90, 18, 30);
}
}

标签: javascriptarraysloopsobject

解决方案


为单个书籍使用与书籍数组不同的变量名称:

for (var i = 0; i<book.length; i++){
    var bookItem = book[i];        
    fill(214, 255, 219);
    rect(i*97, 20, 90, 100);
    fill(0, 0, 0);
    text(bookItem.title, i*97, 29, 70, 100);
    for (var rating = 0; rating < bookItem.stars; rating++) {
        image(getImage("cute/Star"),i*100+ rating * 19, 90, 18, 30);
    }
}

推荐阅读