【发布时间】:2017-08-15 16:51:56
【问题描述】:
我正在迈出编程的第一步,我被 eloquent 的这个问题困住了,尤其是松鼠问题。就是这样:
function hasEvent(event, entry) {
return entry.events.indexOf(event) != -1;
}
function tableFor(event, journal) {
var table = [0, 0, 0, 0];
for (var i = 0; i < journal.length; i++) {
var entry = journal[i], index = 0;
if (hasEvent(event, entry)) index += 1;
if (entry.squirrel) index += 2;
table[index] += 1;
}
return table;
}
console.log(tableFor("pizza", JOURNAL));
// → [76, 9, 4, 1]
我确实理解第一个函数 hasevent,如果条目包含给定事件,它会返回 true。
我无法理解的是 tableFor 函数。我无法了解函数如何流动以及表如何获取其值。例如对于 console.log(tableFor("pizza", JOURNAL)); , 我们得到 [76, 9, 4, 1]。但是看在上帝的份上怎么办?
期刊由本书提供,如下所示:
var JOURNAL = [
{"events":["pizza","exercise","weekend"],"squirrel":false},
{"events":["bread","pudding","brushed teeth","weekend","touched
tree"],"squirrel":false},
{"events":["carrot","nachos","brushed
teeth","cycling","weekend"],"squirrel":false},
{"events":["brussel sprouts","ice cream","brushed
teeth","computer","weekend"],"squirrel":false},
{"events":["potatoes","candy","brushed
teeth","exercise","weekend","dentist"],"squirrel":false},
{"events":["brussel sprouts","pudding","brushed
teeth","running","weekend"],"squirrel":false},
{"events":["pizza","brushed teeth","computer","work","touched
tree"],"squirrel":false},
{"events":["bread","beer","brushed
teeth","cycling","work"],"squirrel":false},
{"events":["cauliflower","brushed teeth","work"],"squirrel":false},
{"events":["pizza","brushed teeth","cycling","work"],"squirrel":false},
{"events":["lasagna","nachos","brushed teeth","work"],"squirrel":false},
{"events":["brushed teeth","weekend","touched tree"],"squirrel":false},
{"events":["lettuce","brushed
teeth","television","weekend"],"squirrel":false},
{"events":["spaghetti","brushed teeth","work"],"squirrel":false},
{"events":["brushed teeth","computer","work"],"squirrel":false},
{"events":["lettuce","nachos","brushed teeth","work"],"squirrel":false},
{"events":["carrot","brushed teeth","running","work"],"squirrel":false} ...etc
我的理解是一个事件作为参数传递,它会查看 Jounral 中的对象数组以查看它是否存在。但是计数是如何发生的呢?
if (entry.squirrel) index += 2;
为什么是 +2 ?为什么不索引 += 3;或索引 += 4; ???
最后为什么 table[index] += 1; ???
例如,第一个循环是这样的,for: console.log(tableFor("pizza", JOURNAL));
//FLOW
i=0;
从日志上面的第一行开始,披萨出现了。
if (hasEvent(event, entry)) index += 1;
所以索引增加并变为1。它继续:
if (entry.squirrel) index += 2;
squirel 是假的,所以 index 没有任何反应。如果找到 squirel,为什么是 +2 ???
那么 表[索引] += 1 从这一点上我无法理解。
有人可以帮我分解一下吗?这对我的训练很有帮助。
提前谢谢你。
【问题讨论】:
标签: javascript arrays eloquent