javascript - 在过滤器数组上切片参数?

标签 javascript filter indexof

我已经在免费代码营上学习了这门类(class)几个小时,但是,我找到了一个我不理解的解决方案,我试图在每一行上添加注释以记录我实现和理解它以供将来引用,我已经理解了一些行,但我无法理解这段代码的某些部分:

  function destroyer(arr) {
  // let's make the arguments part of the array 
   var args = Array.prototype.slice.call(arguments); // this would result into [[1, 2, 3, 1, 2, 3], 2, 3]
   args.splice(0,1); // now we remove the first argument index on the array so we have 2,3 in this example

 // I DO NOT UNDERSTAND THESE CODES BELOW 
  return arr.filter(function(element) { 
  return args.indexOf(element) === -1;
 });

}

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

我已经检查了文档,我发现很难理解,似乎这个示例中的代码非常不同。我非常感谢您的帮助!

最佳答案

    您不理解的代码部分中的
  1. arr指的是传递给destroyer函数的第一个参数;在本例中,数组 [1, 2, 3, 1, 2, 3]
  2. arr.filter 使用 Array.filter方法创建数组的“过滤”版本,仅包含通过 function(element) 定义的“测试”的值 { return args.indexOf(element) === -1; }
  3. 该函数使用 Array.indexOf检查切片 args 数组(您正确识别为等于 [2, 3])是否包含给定的元素。由于 indexOf 在未找到元素时返回 -1,因此检查该值相当于检查指定元素是否不在数组中

所有这些的结果 - 以及函数 destroy 的返回值 - 将是数组 [1, 1],表示数组的过滤版本传递给 destroy,其中包含所有不等于传递给 destroy 的其他值的值。

关于javascript - 在过滤器数组上切片参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902299/

相关文章:

javascript - 数组 javascript indexOf

javascript - toRad() Javascript 函数抛出错误

javascript - Dropzone - 自定义文本消息以与语言一起使用

python - 从 python mysql 查询中过滤掉值

javascript - 矫枉过正?使用indexOf()来发现字符串的内容

javascript - StartPosition 是后期在 JS 的 IndexOf 函数中添加的吗?

javascript - Amcharts 类别轴也显示空数据的日期

javascript - tomcat中只使用jsp和javascript/ajax/jQuery不使用php如何实现跨域访问?

c++ - c++中的卷积实现

c# - 在 WPF 中,您可以在没有代码隐藏的情况下过滤 CollectionViewSource 吗?