【发布时间】:2020-04-26 02:18:08
【问题描述】:
这个我想不通。
字符串 s 的值为“john”。
我的函数应该返回mike和john在s中出现的次数是否相同。
它正确地将 mike 的计数打印为 0。 它正确地将 john 的计数打印为 1。
然而,在检查两者是否相等之后,它返回 true!为什么?
function solve(s) {
// Write your code here
var countm = (s.match(/mike/g) || []).length;
var countj = (s.match(/john/g) || []).length;
console.log(countm);
console.log(countj);
if (countm == countj) {
return Boolean("true");
} else {
return Boolean("false");
}
}
console.log(solve('john'));
【问题讨论】:
-
这是因为“false”字符串是truthy value。您可以简单地返回条件语句,
countm == countj -
Boolean("false") === Boolean("true") === true -
一些观察:返回原始布尔值。不要
return Boolean('true'),只需return true;。它是一个基本的 JS 原语(也是大多数其他语言)。另外,不要使用if (x) { return true} else { return false }:只需返回那个测试:return (countm === countj),完成交易。请注意,不要使用==,它告诉JS 进行任何类型转换以获得结果,使用===,这是strict 相等。最后,不要使用match,使用test:(/john/).test(s)(没有g)将是一个真或假值,所以你不需要奇怪的数组回退和.length
标签: javascript