Javascript 我在将indexOf转换为for循环时遇到问题,因此我得到了错误的答案
问题是 Q) 取2个数组并将其传递给函数,然后检查数组1的平方是否包含在数组2中(注意:顺序无关紧要,在arr1[1,2,2]中也有2个重复,在arr2[1,4,4]中应该有2个重复) 我有一段代码,我正在尝试将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
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