Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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 我在将indexOf转换为for循环时遇到问题,因此我得到了错误的答案_Javascript_Html_Arrays_Algorithm_Data Structures - Fatal编程技术网

Javascript 我在将indexOf转换为for循环时遇到问题,因此我得到了错误的答案

Javascript 我在将indexOf转换为for循环时遇到问题,因此我得到了错误的答案,javascript,html,arrays,algorithm,data-structures,Javascript,Html,Arrays,Algorithm,Data Structures,问题是 Q) 取2个数组并将其传递给函数,然后检查数组1的平方是否包含在数组2中(注意:顺序无关紧要,在arr1[1,2,2]中也有2个重复,在arr2[1,4,4]中应该有2个重复) 我有一段代码,我正在尝试将indexOf转换为for循环,我已经包含了我在这段代码之后尝试的代码 function same2(arr1, arr2){ if (arr1.length !== arr2.length){ return false; } for (let i = 0; i &l

问题是

Q) 取2个数组并将其传递给函数,然后检查数组1的平方是否包含在数组2中(注意:顺序无关紧要,在arr1[1,2,2]中也有2个重复,在arr2[1,4,4]中应该有2个重复)

我有一段代码,我正在尝试将indexOf转换为for循环,我已经包含了我在这段代码之后尝试的代码

function same2(arr1, arr2){
  if (arr1.length !== arr2.length){
    return false;
  }
  for (let i = 0; i < arr1.length; i++){
    let currentIndex = arr2.indexOf(arr1[i] ** 2);
    // if the square of arr1 is contained in any of the index in arr2
      if (currentIndex === -1){
        return false;
      }
        console.log(arr2);
        arr2.splice(currentIndex, 1);
    }
  return true;
  }


same2([10,2, 3, 5], [100, 4, 25, 9]);
函数same2(arr1、arr2){
如果(arr1.length!==arr2.length){
返回false;
}
for(设i=0;i
下面是带有2 for循环的代码,它为相应的输入提供了错误的输出

function same(arr1, arr2){
    if (arr1.length !== arr2.length){
        return false;
    }
    for (let i = 0; i < arr1.length; i++){
        for (let j = 0; j < arr2.length; j++){
            let currentIndex = arr1[i] ** 2;
            console.log(currentIndex);
            if (currentIndex === -1){
                return false;
            }
            if (arr2[j] === currentIndex){
                arr2.splice(currentIndex, 1);
//                 console.log(arr2);
            } 

        }
    }
    return true; 
}
same([1, 10,2, 4], [10, 1, 16, 4]);
功能相同(arr1、arr2){
如果(arr1.length!==arr2.length){
返回false;
}
for(设i=0;i

我知道我对数组的索引有问题,但我无法破坏它。

这种函数方法怎么样

test2=(i1,i2)=>i1.length==i2.length&&i1.reduce((a,c)=>a&&i2.includes(c*c),1)

log(test2([1,2,3],[1,4,9])
关于这个问题,您的意思是要找到一个数字,它是另一个数组中单个数字的平方吗?(或多个数字等)还有,这是一个家庭作业问题吗?您是否有任何限制(必须使用循环等)?更准确地说:您是否需要检查input1中所有数字的平方是否包含在input2中?复制品呢?input2中的额外元素如何?
currentIndex
不是索引,因此变量的名称是错误的。为什么要为每一轮内循环计算
currentIndex
,如果它的值只会在每一轮外循环中改变
currentIndex
永远不会是负值,因此它永远不会是
-1
@DennisVash不,我想检查arr2中的每个数组元素在arr1中是否都有一个对应的元素,即它的sq。我知道有不同的方法,但我在使用2 for循环时遇到困难。@Maestro请参阅updatecheck了解这种情况
console.log(相同([1,2,2],[1,1,4]))
它仍然返回true,因为它已经返回false。@Maestro当然返回了。您自己写道:两个数组的长度必须相等,重复的数组很好,如果arr2中有对应的arr1的sq,它应该返回true。上面的示例输入满足此约束。当然我现在理解您的意思,但是您以前从未说过。@Maestro请参阅更新2