首页 > 解决方案 > 如何为特定事件提取二乘二表

问题描述

 function tableFor(event, journal) {
 let table = [0, 0, 0, 0];
 for (let i = 0; i < journal.length; i++) {
     let entry = journal[i], index = 0;
     if (entry.events.includes(event)) index += 1;
     if (entry.squirrel) index += 2;
     table[index] += 1;
}
return table;
}
 console.log(tableFor("pizza", JOURNAL));

日志文件

我正在阅读 eloquent javascript 第三版,我发现很难理解这段代码,尤其是 if 条件。我的问题是为什么在entry.events.includes(event), 索引应该增加 1 而 inentry.squirrel应该增加 2?另外,如果for循环中的两个if都为真,table[index] += 1是否会增加?

标签: javascript-objects

解决方案


有4个状态需要考虑:

  1. 如果日志中的事件不包含比萨饼并且不是松鼠,则在索引 0 处递增表

  2. 如果日志中的事件包含 'pizza' 但不是 squirrel 表在索引 1 处递增

  3. 如果事件不包含 'pizza' 但 squirrel 为真,则表将在索引 2 处递增
  4. 如果BOTH事件包含“pizza”且 squirrel 为真,则表将在索引 3 处递增

这将遍历 JOURNAL 文件中的 JSON 对象。对于每个“事件”,将选择这 4 种状态中的一种,并且表变量将以上述方式受到影响。


推荐阅读