对于Loop not looping,确认结束

时间:2017-04-13 19:35:00

标签: javascript

我正在尝试确认字符串参数的结尾与目标参数相同。

为什么我的for循环不循环?对我来说,str.substr(-i)应该继续增加并最终匹配目标参数。

function confirmEnding(str, target) {
  for (var i=0;i<str.length;i++) {
     if (str.substr(-i) === target) { 
        return true;
     }
     else {
        return false;
     }
  }
}

confirmEnding("Bastian", "n");

4 个答案:

答案 0 :(得分:1)

这是您可以检查的一种方式。

&#13;
&#13;
function confirmEnding(str, target) {
// get the last n letters of the string where n is the length of the target
// then compare that to the target
  return str.substr(str.length - target.length, target.length) === target;
}

console.log(confirmEnding("Bastian", "n")); // true
console.log(confirmEnding("Bastian", "ian")); // false
console.log(confirmEnding("Bastian", "i")); // true
&#13;
&#13;
&#13;

答案 1 :(得分:1)

问题在于return关键字。以下是您想要的功能示例:

function confirmEnding(str, target) {
    var result = false;
    for (var i=0;i<str.length;i++) {
        if (str.substr(-i) === target) { 
            result = true;
        }   
    }
    return result;
}
console.log(confirmEnding("Bastian", "n"));

答案 2 :(得分:0)

<强>替代

试试.endsWith() (ES6)

示例:

'Bastian'.endsWith('n'); // true
  

参考: String.prototype.endsWith() (检查浏览器支持/ Polyfill)

答案 3 :(得分:0)

这是我的回答

function confirmEnding(str, target) {
      // "Never give up and good luck will find you."
      // -- Falcor
      var newStr;
      newStr=str.substr(-target.length,target.length);
      if(newStr===target){
        return true;
      }else{
        return false;
    }
    }

    confirmEnding("Bastian", "n");