Javascript 如何从数组中删除已比较的值?

Javascript 如何从数组中删除已比较的值?,javascript,arrays,Javascript,Arrays,嗨,我正在努力解决这个问题 给定两个数组a和b,编写一个函数comp(a,b)(Clojure中的compSame(a,b))来检查这两个数组是否具有具有相同重数的“相同”元素。“相同”在这里意味着,b中的元素是a平方中的元素,无论顺序如何 经过多次测试,我达到了这个状态,下面是我的函数 function comp(array1, array2) { let answer = []; let arrayToCompare = []; if(array1){ ar

嗨,我正在努力解决这个问题

给定两个数组a和b,编写一个函数comp(a,b)(Clojure中的compSame(a,b))来检查这两个数组是否具有具有相同重数的“相同”元素。“相同”在这里意味着,b中的元素是a平方中的元素,无论顺序如何

经过多次测试,我达到了这个状态,下面是我的函数

function comp(array1, array2) {

  let answer = [];
  let arrayToCompare = [];
  
  
  if(array1){
    array1.forEach((array) => {
      arrayToCompare.push(Math.pow(array, 2));
    });
    console.log(arrayToCompare);
    console.log(array2)
  }else{
    return false
  }
  
  if(array1 === null || array2 === null){
    return false
  }

  for (let i = 0; i < arrayToCompare.length; i++) {
    if (array2.includes(arrayToCompare[i])) {
      answer.push(true);
    } else {
      answer.push(false)
    }
  }

  if (answer.includes(false)) {
    console.log(false);
    return false;
  } else {
    console.log(true);
    return true;
  }
}
这应该返回为false,但我的函数返回true。有人能告诉我我失踪的地方吗&
如何优化此功能

这就是我解决问题的方法:

 function comp(array1, array2) {
        return array2.sort((a,b) => a - b).join('-') === array1.sort((a,b) => a - b).map(item => item ** 2).join('-');
    }

这就是我解决问题的方法:

 function comp(array1, array2) {
        return array2.sort((a,b) => a - b).join('-') === array1.sort((a,b) => a - b).map(item => item ** 2).join('-');
    }

据我所知,您只需删除所有成功签入的阵列2,这样就不会对重复项产生误报

  for (let i = 0; i < arrayToCompare.length; i++) {
    if (array2.includes(arrayToCompare[i])) {
      
      // if found, remove it from array2 so it will not be compared again
      array2.splice(array2.indexOf(arrayToCompare[i]), 1);
      
      answer.push(true);
    } else {
      answer.push(false)
    }
  }
for(设i=0;i

我进行了测试,它与给定的示例数据配合良好

据我所知,您只需删除每个成功签入阵列2,这样就不会对重复项产生误报

  for (let i = 0; i < arrayToCompare.length; i++) {
    if (array2.includes(arrayToCompare[i])) {
      
      // if found, remove it from array2 so it will not be compared again
      array2.splice(array2.indexOf(arrayToCompare[i]), 1);
      
      answer.push(true);
    } else {
      answer.push(false)
    }
  }
for(设i=0;i
我进行了测试,它与给定的示例数据配合良好