Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的函数接受2个元素的数组并检查第一个元素是否包含第二个元素中的每个字母,这有什么问题?_Javascript - Fatal编程技术网

Javascript 我的函数接受2个元素的数组并检查第一个元素是否包含第二个元素中的每个字母,这有什么问题?

Javascript 我的函数接受2个元素的数组并检查第一个元素是否包含第二个元素中的每个字母,这有什么问题?,javascript,Javascript,函数被赋予一个由2个元素组成的数组,确切地说是2个字符串。如果第一个元素在第二个元素中有每一个字母(只有一次,没有大小写,没有顺序),那么函数将返回true(如果不是false) 嗨,你好,工作。但例如,突变([“zyxwvutsrqponmlkjihgfedcba”,“qrstu”)不知何故并没有返回真值。我怀疑嵌套在for循环中的if语句有问题。我是否多次返回假或真,或者其他问题 功能突变(arr){ var-one=arr[0]; var 2=arr[1]; 一、toLowerCase(

函数被赋予一个由2个元素组成的数组,确切地说是2个字符串。如果第一个元素在第二个元素中有每一个字母(只有一次,没有大小写,没有顺序),那么函数将返回true(如果不是false)

嗨,你好,工作。但例如,突变([“zyxwvutsrqponmlkjihgfedcba”,“qrstu”)不知何故并没有返回真值。我怀疑嵌套在for循环中的if语句有问题。我是否多次返回假或真,或者其他问题

功能突变(arr){
var-one=arr[0];
var 2=arr[1];
一、toLowerCase();
二、toLowerCase();
变量数组=2.split(“”);

对于(var i=0;i首先,如果在
one
中找到任何不在
two
中的字符,则只应返回false,但只能在循环结束时返回true,因为这样您就知道所有字符都匹配。它不能在else块中

第二,根据你的描述,这不应该是另一种情况吗?你应该迭代
one
的字符,看看它们是否在
two
中。这样它就合适了

功能突变(arr){
var one=arr[0].toLowerCase();
var two=arr[1].toLowerCase();
var oneArr=1.split(“”);
var twoArr=2.split(“”);
log(“是否所有的“+1+”字符都出现在“+2+”中?”);

对于(var i=0;i首先,如果在
one
中找到任何不在
two
中的字符,则只应返回false,但只能在循环结束时返回true,因为这样您就知道所有字符都匹配。它不能在else块中

第二,根据你的描述,这不应该是另一种情况吗?你应该迭代
one
的字符,看看它们是否在
two
中。这样它就合适了

功能突变(arr){
var one=arr[0].toLowerCase();
var two=arr[1].toLowerCase();
var oneArr=1.split(“”);
var twoArr=2.split(“”);
log(“是否所有的“+1+”字符都出现在“+2+”中?”);
对于(var i=0;i

也就是说,你实际上没有在任何东西上循环,因为不管发生什么,你的循环总是在第一次迭代时返回

考虑函数应该执行的逻辑。如果我理解正确,则如果循环遇到在
one
中找不到的字母,则返回false。如果循环从未遇到此类匹配,则返回true。在这种情况下,循环后的默认条件将是返回true。类似以下内容:

for(var i=0;i<array.length;i++){
  if(one.indexOf(array[i]) === -1){
    return false;
  }
}
return true;
对于(var i=0;i此:

也就是说,你实际上没有在任何东西上循环,因为不管发生什么,你的循环总是在第一次迭代时返回

考虑函数应该执行的逻辑。如果我理解正确,则如果循环遇到在
one
中找不到的字母,则返回false。如果循环从未遇到此类匹配,则返回true。在这种情况下,循环后的默认条件将是返回true。类似以下内容:

for(var i=0;i<array.length;i++){
  if(one.indexOf(array[i]) === -1){
    return false;
  }
}
return true;

for(var i=0;i主要问题是在循环内使用else块返回true,因此循环只检查一个元素,然后根据该元素是否在第一个字符串中返回true或false。将return true语句放在for循环之后

第二个问题是,当检查是否存在时,如果确实存在,则返回false。请改用
one.indexOf(array[i])=-1

最后一个问题是,您正在拆分字符串以进行迭代,但不需要拆分字符串就可以使用for循环进行迭代

其余的更改只是使用更少的代码行来做同样的事情

功能突变(arr){
arr=arr.map(e=>e.toLowerCase());
for(设i=arr[1]。长度-1;i>-1;--i)
if(arr[0].indexOf(arr[1][i])=-1)返回false;
返回true;
}
log(突变([“你好”,“你好]));
log(突变([“你好”,“你好]));

console.log(mutation([“zyxwvutsrqponmlkjihgfedcba”,“qrstu”]);
主要问题是在循环内使用else块返回true,因此循环只检查一个元素,然后根据该元素是否在第一个字符串中返回true或false。将return true语句放在for循环之后

第二个问题是,当检查是否存在时,如果确实存在,则返回false。请改用
one.indexOf(array[i])=-1

最后一个问题是,您正在拆分字符串以进行迭代,但不需要拆分字符串就可以使用for循环进行迭代

其余的更改只是使用更少的代码行来做同样的事情

功能突变(arr){
arr=arr.map(e=>e.toLowerCase());
for(设i=arr[1]。长度-1;i>-1;--i)
if(arr[0].indexOf(arr[1][i])=-1)返回false;
返回true;
}
log(突变([“你好”,“你好]));
log(突变([“你好”,“你好]));

log(突变([“zyxwvutsrqponmlkjihgfedcba”,“qrstu”]);
不能“多次返回”。一旦返回值,它就会被返回。函数在该点执行完毕。当您在调试器中单步执行此代码时,行为与您预期的有何不同?发生这种情况时变量的值是什么?David是对的,您在for循环中有返回…您不能“多次返回”。返回值后,将返回该值。函数在该点执行完毕。当您在调试器中单步执行此代码时,行为与您预期的不同之处是什么?发生这种情况时,变量的值是什么?David是对的,您在for循环中返回了…因此更改是您删除了!并移动return在外面是真的
for(var i=0;i<array.length;i++){
  if(one.indexOf(array[i]) === -1){
    return false;
  }
}
return true;