免费代码营挑战 - 寻找和摧毁

Free Code Camp Challenge - Seek and Destroy

提问人:Michelle Stone 提问时间:10/7/2023 更新时间:10/8/2023 访问量:44

问:

我正在研究挑战 Seek and Destroy(JavaScript 简介),即使在阅读了多个答案之后,我还是不明白。我想知道我的思维过程是否比我的语法有什么问题更有效,尽管两者都将不胜感激。

问题

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

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

这是下面的初始代码:

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 循环 while 循环 函数

评论


答:

0赞 Michelle Stone 10/8/2023 #1

我想我弄清楚了一些我不明白的事情。在这里发布,供未来也想使用点差运算符的学习者使用(...)。
这个视频非常有帮助。

来自视频的解决方案

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. 不知道我需要使用关键字“参数”
  3. 我仍然不明白“过滤器”是如何很好地实现它的。

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