免费编程营挑战 - 寻找并摧毁

问题描述 投票:0回答:1

我正在挑战“Seek and Destroy”(JavaScript 简介),即使在阅读了多个答案后我还是不明白。我想知道我的思维过程是否比我的语法错误更有效,尽管两者都会受到赞赏。

问题

您将获得一个初始数组作为销毁器函数的第一个参数,后跟一个或多个参数。从初始数组中删除与这些参数具有相同值的所有元素。

该函数必须接受不确定数量的参数,也称为可变参数函数。您可以通过向函数定义添加剩余参数或使用参数对象来访问其他参数。

这是下面的初始代码:

function destroyer(arr) {
  return arr;
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

这是我在评论中思考过程的进展。

//unsure how to deal with variable amounts of arugments I tried to copy "variadic function" examples but really don't understand the syntax of them.  

function destroyer(arr,...remove) {

    //create empty array to hold where we push elements to
    const ourArray = [];

   //iterate through each element
    for (let i = 0; i< arr.length, i++;)


    //check that each element does not = arguments
      while (i != ...remove) {
    // keep push unique elements to the new array
        ourArray.push(i);
          i++;
}
      
  return ourArray;
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

这是我第一次发帖,所以我希望我能把问题说清楚。请使用初学者友好的词汇,提前感谢您的帮助。

javascript for-loop while-loop variadic-functions
1个回答
0
投票

我想我明白了一些我不明白的事情。在此发布给未来也想使用扩展运算符的学习者 (...)。
这个视频非常有帮助。

视频解决方案

function destroyer(arr) {
  const argsArr = [...arguments].slice(1);

  const filteredArr = [];
  for (let i = 0; i< arr.length; i++){
    if(!argsArr.includes(arr[i])){
      filteredArr.push(arr[i]);
    }
  }
  return filteredArr;
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);    

我遇到的问题/误解。

  1. 我没有意识到该函数只有一个输入(arr),并且我不需要包含“...remove”来表示未知数量的参数。
  2. 不知道我需要使用关键字“arguments”
  3. 我仍然不明白“过滤器”如何很好地实现它。

我是初学者,但我正在尝试,我希望这对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.