了解循环中%运算符的用法(可汗学院项目)

时间:2018-10-10 15:25:33

标签: javascript

我希望我来对地方了。我目前正在可汗学院做一个项目,我需要使用%运算符为我的书架创建一个书本循环。到目前为止,我只能设法做到这一点,但是我对如何获取书目清单以在达到一定数量后自动转到下一个书架感到困惑。

很抱歉,如果我不清楚,但希望我提供的代码和图像很有意义。

谢谢。

Bookshelf Project Bookshelf Project Instructions

项目代码:

//array of objects for books
var book = [
    {title: "The Giver",
    author: "Jamie",
    stars: 4,
    color: color(156, 24, 222),
    rec: true
    },
    {title: "Lord of the Rings",
    author: "Mr Rings",
    stars: 5,
    color: color(222, 24, 97),
    rec: true
    },
    {title: "Lord of the Flies",
    author: "Mr Flies",
    stars: 2,
    color: color(222, 24, 215),
    rec: false
    },
    {title: "Grapes of Wrath",
    author: "Mr Grapes",
    stars: 3,
    color: color(34, 133, 19),
    rec: true
    }
];


// draw shelf
fill(173, 117, 33);
rect(0, 120, width, 10);


// loop of books
for (var i = 0; i < book.length; i++) {
    fill(book[i].color);
    rect(100 * i + 5, 20, 90, 100);
    fill(240, 228, 240);
    text(book[i].author, 100 * i + 10, 85, 70, 100);
    text(book[i].title, 100 * i + 10, 30, 70, 100);
    for (var s = 0; s < book[i].stars; s++) {
    image(getImage("cute/Star"), 5 + s * 15 + i * 100, 90, 20, 30);    
    }
    if(book[i].rec === true) {
    image(getImage("creatures/Winston"), i * 100 + 75, 25, 15, 15);       
    } else {
    image(getImage("creatures/OhNoes"), i * 100 + 75, 25, 15, 15);   
    }
    fill(173, 117, 33);
    rect(0, 120 + i * 100, width, 10);
}›

1 个答案:

答案 0 :(得分:2)

与其他许多编程语言一样,使用%(百分号)作为运算符Remainder的Javascript,在将一个数除以另一个后将返回余数

示例:

2 % 4 //-> 0
4 % 4 //-> 0
5 % 4 //-> 1
6 % 4 //-> 2
8 % 4 //-> 0
9 % 4 //-> 1
10 % 4 //-> 2

在作业中,他要求您在画布下添加更多书架,并且显然该书架仅包含四本书,您可以使用%确定循环中每个书架中任何书的索引,正如我在上面的示例中提到的,如果您将图像索引用作操作的左手,而将书本的长度用作右手,则您将知道每个书架中左边的第一本书您可以算出它在画布中的位置

(index + 1) % 4 // Add one to index because computer starts counting from 0