javascript 循环不在函数中迭代

vltsax25  于 2023-01-04  发布在  Java
关注(0)|答案(2)|浏览(140)

这段代码返回false,我认为它应该返回true

function containss(arr, charr)
{
 for (let w = 0; w < arr.length; w++)
 {
   //console.log(arr[0][q]);
   console.log(arr[0][w]);
   if (arr[0][w].toLowerCase() === charr[0].toLowerCase())
   {
     return true;
   }
 }
 return false;
}

  
let arr2 = ["Hello"];
console.log(containss(arr2, "e"))

我试过使用索引,只有当我将传递给H或h的字母更改为H或h时,它才能工作(返回true)。请帮助我,我快疯了

5n0oy7gb

5n0oy7gb1#

因为你传递了一个只有一个字符串元素的数组,所以你需要迭代数组的第一个元素,例如测试arr[0].length而不是arr.length

function contains1(arr, char) {
 for (let w = 0; w < arr[0].length; w++) {
   console.log(arr[0][w]);
   if (arr[0][w].toLowerCase() === char.toLowerCase()) {
     return true;
   }
 }
 return false;
}

function contains2(arr, char) {
 return arr[0].indexOf(char) >= 0;
}

  
let arr2 = ["Hello"];
console.log(contains1(arr2, "e"))
console.log(contains2(arr2, "e"))

请注意缩短版本contains2()

rnmwe5a2

rnmwe5a22#

要使数组中的多个单词都能正常工作,可以使用array.some()

function contains(arr, compareCharacter) {
  return arr.some((item) => {
    return item.split("").some((character) => {
      return character.toLowerCase() === compareCharacter.toLowerCase();
    });
  });
}

let arr2 = ["Hello", "test"];
console.log(contains(arr2, "t"));

相关问题