提问人:Michelle Stone 提问时间:10/7/2023 更新时间:10/8/2023 访问量:44
免费代码营挑战 - 寻找和摧毁
Free Code Camp Challenge - Seek and Destroy
问:
我正在研究挑战 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);
这是我第一次发帖,所以我希望我把问题说清楚。请使用适合初学者的词汇,提前感谢您的帮助。
答:
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);
我有问题/误解。
- 我没有意识到该函数只有一个输入 (arr),我不需要包含“......remove“来表示未知数量的参数。
- 不知道我需要使用关键字“参数”
- 我仍然不明白“过滤器”是如何很好地实现它的。
我是初学者,但我正在尝试,我希望这对某人有所帮助。
评论