错误地返回true
Improperly return true
Coderbyte Challenge 7
有人能帮忙吗?下面的函数应该检查字符串中的每个字母是否都有"+"和两边,并在字母不受+约束时返回true和false。但是当我把下面的字符串通过时,它会通过true,而它应该是false,因为k在右手边没有+。提前谢谢。
str = '+f+++l+k=+'
alpha = 'abcdefghijklmnopqrstuvwxyz'
function SimpleSymbols(str) {
str = str.toLowerCase()
for (i=0 ; i<str.length ; i++) {
if (alpha.indexOf(str.charAt(i)) > 0 && i === 0) {
return false
}
else if (alpha.indexOf(str.charAt(str.length -1)) > 0) {
return false
}
else if (alpha.indexOf(str.charAt(i)) > 0 &&
(str.charAt(i-1) !== '+' || str.charAt(i+1) != '+')) {
return false
}
else {return true}
}
}
您的函数每次在第一次迭代时都会中断for
循环。您只需要中断false
分支上的循环。然后简单地在for循环之后返回true
(这意味着直到那一行它才与false
一起退出。
作为替代解决方案:
你可以利用这个逻辑:
计算字母数和两边有+
的字母数。如果两者相等,则返回true
else false
function SimpleSymbols(str) {
return str.match(/[a-z]/gi).length == str.match(/'+[a-z]'+/g).length
}
这个简单的逻辑怎么样
str = '+f+++l+k++'
function SimpleSymbols(str) {
str = str.toLowerCase()
for (i=0 ; i<str.length ; i++) {
if (str[i] === '+') {
continue;
}
if (i === 0 || i === str.length - 1) {
return false;
}
if (str[i - 1] === '+' && str[i].match(/[a-z]/) && str[i + 1] === '+') {
i += 1;
continue;
} else {return false;}
}
return true;
}
Fiddle
如果我们开始讨论替代方案,尽管Regex
解决方案要短得多,但带有string.split
的版本可读性要高得多:
function SimpleSymbols(str){
if(str.length === 0) return false;
if(str[0] !== '+' || str[str.length-1] !== '+') return false;
var subs = str.split('+');
for(var i =0; i < subs.length; i++){
if(subs.length > 1) return false;
}
return true;
}
相关文章:
- 对于loop.if-仅在经过所有间隔后返回true
- 如果函数返回True,则显示Javascript按钮
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 过滤器返回true或false
- 我对“;返回true"嵌套函数内部;t工作
- 如何在成功输入时使“返回TRUE”
- 检查一个元素是否有一个类与另一个类总是返回true
- 通过AJAX从具有LazyLoadingEnabled=true的EF返回的数组不正确
- JavaScript函数未返回true
- 如果URL中有任何字符串变体匹配,则返回true
- 使用!而in运算符在应该为true时返回false,为什么
- 如何使以下函数返回true或false
- 为什么 javascript 返回对象位置 true 或 false
- 使用“in”关键字检查 0 始终返回 true
- hasOwnProperty 在对照父对象属性进行检查时返回 true
- 为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的
- Backbone.js集合.Create函数没有使用wait: true返回更新后的模型
- Sequelize:调用.get({plain: true}))返回.get不是函数
- 在if语句中为true, true返回false
- 固定脚和外高度(true)返回值