【发布时间】:2021-04-08 00:41:26
【问题描述】:
我正在做一个编码挑战,给你一个字符串数组,如下所示:[life, Petes kata, eating, kata],你的代码应该根据字符串中的内容返回一个值:
kata = 5
function paul(x) {
let returnString = 0
var i;
for (i = 0; i < x.length; i++) {
if (x.includes('life') === true) {
returnString += 5
} else if (x.includes('eating') === true) {
returnString += 1
} else if (x.includes('Petes kata') === true) {
returnString += 10
}
}
return returnString
}
目前,如果数组中只有一个单词,我的函数可以正常工作。 life 返回 5,Petes kata 返回 10,这是应该的。
但是当数组中超过 1 个单词时,函数总是返回 0,我不知道为什么。
我认为用 for 循环包装 if 语句会使函数多次添加到 returnString,如果它只处理第一个单词我也能理解,但返回 0 让我困惑了一段时间.
【问题讨论】:
-
所以你知道,在 Markdown 中,你只需要在内联代码的任一侧使用一个反引号,例如变量名;定义代码块时要使用三个反引号。
-
您的条件中的
=== true不是必需的,可以删除。听起来您根本不需要循环:x.includes('life')将是true或false,无论i是什么。 -
我希望 if 语句适用于数组中的每个项目,这就是我放入循环的原因。还有其他方法吗?
-
您确定要使用
else if吗?paul(["life", "eating"])返回10,因为对于数组的每一项,您都需要测试"life"是否包含在数组中。它总是这样,所以你添加5并且x.includes('eating')永远不会被检查,因为你使用else if而不是另一个if。请参阅includes的文档。paul(["life", "life"])应该返回什么?5还是10?如果5,则只使用.includes而不使用循环。如果10,比较在循环内:x[i] === "life". -
[life life]应该返回 10,而不是 5。抱歉,我没有说清楚,应该是累积分数。
标签: javascript arrays for-loop