gpt4 book ai didi

Javascript:请帮助我理解这个功能

转载 作者:行者123 更新时间:2023-11-29 10:08:34 24 4
gpt4 key购买 nike

很长一段时间以来,我一直试图理解这个函数,但它对我来说就是没有意义。该函数的目标是删除参数数组中与其他参数数字匹配的任何数字。

为什么需要对数组进行切片才能使函数正常工作?

args.splice(0,1) 是多余的吗?我删除了它,但没有任何改变。

似乎过滤器函数完成了大部分工作,但我看不出它实际上是如何过滤数字的...

function destroyer(arr) {
var args = Array.prototype.slice.call(arguments);
args.splice(0, 1);
return arr.filter(function(element) {
return args.indexOf(element) === -1;
});
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

最佳答案

让我们逐行分析:

var args = Array.prototype.slice.call(arguments);

JavaScript 的arguments 变量类似于数组,但它不是数组。您可以自己尝试一下:arguments instanceof Array 将给出 false。因此,应用 Array 原型(prototype)中的 slice 方法只会将 arguments 转换为真正的数组。

args.splice(0, 1);

这是为了删除第一个参数,在您的例子中是 arr

return arr.filter(function(element) {
return args.indexOf(element) === -1;
});

这将遍历 arr 中的所有数字,并将检查每个数字是否存在于参数中。当 indexOf() 返回 -1 时,表示在数组中找不到该元素。

关于Javascript:请帮助我理解这个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38259219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com