如何解决如果数组长度超过 1
我正在做一个编码挑战,你会得到一个像这样的字符串数组:[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 一直让我困惑一段时间.
在此先感谢您的帮助。
解决方法
随着需求的变化,您可以像这样处理计数出现的问题......
function paul(x) {
let score = 0;
x.forEach(s => {
if(s == 'life') score+=5;
else if(s == 'eating') score +=1;
else if(s == 'Petes kata') score +=10;
})
return score
}
console.log(paul(['life','Petes kata','eating','kata','life']))
也许您误解了 Array 的 .includes()
方法的使用。目前,您正在使用 for 循环手动迭代数组中的每个元素,并尝试在 .includes()
上执行 x
- 对输入数组的引用。实际上这不是必需的,因为 .includes()
方法自动遍历数组中的每个元素。
这样就足够了:
let arr = ["life","Petes kata","eating","kata"];
function paul(x) {
let returnString = 0;
if (x.includes('life')) {
returnString += 5;
}
if (x.includes('eating')) {
returnString += 1;
}
if (x.includes('Petes kata')) {
returnString += 10;
}
return returnString;
}
console.log(paul(arr));
我不明白您为什么在代码中使用 for
语句。也许你写错了代码。
请尝试这样。
for (i = 0; i < x.length; i++) {
if (x[i].includes('life')) {
returnString += 5
} else if (x[i].includes('eating')) {
returnString += 1
} else if (x[i].includes('Petes kata')) {
returnString += 10
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。