检查字符串的结尾

时间:2017-11-25 01:12:23

标签: javascript loops

function confirmEnding(str, target) {
  var end = target;
  var match = '';

  for(var x = 0; x < str.length; x++){
      for(var j = 0; j < str[x].length; j++){
          if(str[x][j]){
             match = str[x][j];
          }
      }
  }
  return match.substr(-target.length) === target;
}

confirmEnding("He has to give me a new name", "name");

但我想知道我是否可以循环遍历字符串,然后使用适当的索引进行检查。

有人能理解我的做法,让我知道它是如何/为什么不可行的?

目前只检查最后一个字符,所以整个单词都不起作用。我知道下面的一行会起作用

return str.substr(-target.length) === target;

会起作用,但有人可以用我的方法帮助我

编辑:

我稍微改了一下,靠近但仍然没有运气。

function confirmEnding(str, target) {

  for(var x = str.length-1; x < str.length; x++){
      for(var j = target.length-1; j>=0; j--){
          if(str[x] === target[j]){
              return true;
          } else{
             return false; 
          }
      }
  }

}

confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification");

当它返回false时返回true。我明白为什么,但想着决心。

1 个答案:

答案 0 :(得分:1)

如果使用循环是严格的要求,那么我会以某种方式进行

function confirmEnding(source, target) {
  var lengthT = target.length;
  var lengthS = source.length;
  for(var x = 0; x < lengthT; x++) {
    if(source[lengthS - 1 - x] !== target[lengthT - 1 - x]) {
       return false;
    }
  }
  return true;
}

confirmEnding("He has to give me a new name", "name"); // true

confirmEnding方法的简单实现只是

function confirmEnding(source, target) {
  return source.substr(source.length - target.length, target.length) === target;
}