Javascript 基本算法

标签 javascript arrays algorithm for-loop

如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则返回 true。不区分大小写和顺序无关紧要,只有字母很重要。例如 - ["Hello","hello"] 返回 true,["Alien","lien"] 和 ["Mary", "Aarmy"] 也是如此。我想你明白了。 如果不返回false。

我可以用 Array.indexOf() === -1 解决它(在第一个 for 循环中)但是它可以用这段代码工作吗,它是相反的。我只是无法让它返回 false最后,我想知道,你能不能在不改变方法的情况下让它返回 false。

  function mutation(arr) {
  var split = arr[1].toLowerCase().split("");
  var splitSecond = arr[0].toLowerCase().split(""); 
  for(k=0;k<=arr[0].length;k++){
   for(i=0;i<=arr[1].length;i++){
     if(split[i]===splitSecond[k]) {
      return true
   }
  }
 } return false
}

mutation(["hello", "hney"], "");  

如果使用任何其他方法,请说明:)

最佳答案

您的代码的问题在于您返回 true; 一旦 一个 字母匹配。

您需要做的是检查是否所有 字母匹配,通过检查任何 字母 匹配更容易实现。

 mainloop:
 for(k=0;k<=arr[0].length;k++){
   for(i=0;i<=arr[1].length;i++){
     if(split[i]===splitSecond[k]) {
       continue mainloop; // found the letter, move on to next search
     }
   }
   return false; // failed to find letter, fail here
 }
 return true; // haven't failed yet and end of input reached. Success!

另一种选择是:

for(k=0;k<arr[0].length;k++) {
  if( arr[1].indexOf(split[k]) < 0) {
    // letter not found
    return false;
  }
}
// not failed yet? Excellent!
return true;

关于Javascript 基本算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32717408/

相关文章:

javascript - 为什么这个EventSource会反复触发消息和错误?

javascript - 如何重用 thens 链之间的函数(与 promise 相关)

javascript - ES6 根据字符串值创建单独的数组

php - php中的全局数组

arrays - 如果 $notIn 的值是空数组,Sequelize 不会返回任何内容,但如果数组包含空值,它会返回我

arrays - 值不是数组类型

javascript - 获取数组中元素的所有组合

javascript - 如何使用 jQuery 制作下拉菜单

java - 如何在 Java 中编写自定义原子方法?

algorithm - 经济模拟算法?