Can';t让此函数根据javaScript中的后续参数删除特定元素

Can';t让此函数根据javaScript中的后续参数删除特定元素,javascript,arrays,Javascript,Arrays,我有一个初始数组(destroyer函数中的第一个参数),后跟一个或多个参数。我基本上想使用后面的参数来确定最终从数组中拼接出什么 function destroyer(arr) { var temp = [], j = 0; for(var i= 1; i < arguments.length; i++){ temp.push(arguments[i]); } while(j < arr.length){ if(temp[j] === arr

我有一个初始数组(destroyer函数中的第一个参数),后跟一个或多个参数。我基本上想使用后面的参数来确定最终从数组中拼接出什么

function destroyer(arr) {
  var temp = [], j = 0;
  for(var i= 1; i < arguments.length; i++){
     temp.push(arguments[i]);
   }

  while(j < arr.length){

    if(temp[j] === arr[j]){

      arr.splice(j, 1);

    }
     j++;
  }


  return arr;
}

我刚拿回我原来的阵列

这应该是可行的,但它的大O(n^2),因为它需要搜索将被删除的元素

function destroyer(arr) {
    var temp = Array.prototype.slice.call(arguments);
    for (var i=1;i<temp.length;i++) {
        for (var j=0;j<arr.length;j++) {
            if (temp[i] === arr[j]) {
                arr.splice(j, 1);
            }
        }
    }

    return arr;
}

console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3))
功能销毁程序(arr){
var temp=Array.prototype.slice.call(参数);

对于(var i=1;i这是一个Freecodecamp挑战吗?我似乎很熟悉

以下是我解决这个问题的方法

function destroyer(arr) {
  var temp = [], j = 0;
  for(var i= 1; i < arguments.length; i++){
     temp.push(arguments[i]);
   }
  var resAr=[];
  while(j < arr.length){
    if(temp.indexOf(arr[j])===-1){
      resAr.push(arr[j])
    }
    j++;
  }
  return resAr;
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
功能销毁程序(arr){
var-temp=[],j=0;
for(var i=1;i
我建议使用一种更简单的方法,它不会改变原始数组。由于使用了散列,它还具有O(n)的优点

function notDestroyer(arr) {
  var lookup = {};
  var result = [];

  for (var i = 1; i < arguments.length; i++) {
    lookup[arguments[i]] = true;
  }

  for (var j = 0; j < arr.length; j++) {
    if (!lookup[arr[j]]) {
      result.push(arr[j]);
    }
  }

  return result;
}
功能非破坏器(arr){
var查找={};
var结果=[];
for(var i=1;i
不确定预期结果是什么?如果
参数[0]
以外的
参数[0]
参数[0]
数组中,请从
参数[0]
数组中删除这些项?如果我调用destroyer([5,7,8],8)它是否返回[5,7]?需要关于输入和输出的更多信息…嘿,Jordan,我添加了一些更多的信息。这将起作用:
函数销毁程序(arr){返回arr.filter(x=>[].indexOf.call(arguments,x)<0)}
什么是“big-O(n^2)”,我知道我可以用谷歌搜索它,但我想它可以作为一个附加的文档来回答这个问题。这在小数组上非常有效,但我的意思是,如果您的数组有1000000个元素,并且要删除这些1000000个元素,这将需要很长时间,如果您的第二个参数是连续的,就像在数组中一样,那么您可以通过array.splice(array.indexOf(temp[0]),temp.length找到第一个元素)是的!哇,所以我非常接近。我想这是相对的。有趣的是,我不知道为什么我会被否决。但我想会发生这种情况。但我肯定会查找
indexOf()
谢谢!
function notDestroyer(arr) {
  var lookup = {};
  var result = [];

  for (var i = 1; i < arguments.length; i++) {
    lookup[arguments[i]] = true;
  }

  for (var j = 0; j < arr.length; j++) {
    if (!lookup[arr[j]]) {
      result.push(arr[j]);
    }
  }

  return result;
}