码迷,mamicode.com
首页 > Web开发 > 详细

JS 手写之 Array.prototype.filter

时间:2021-05-25 18:03:20      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:测试   tostring   lse   异常   ret   数组   cts   测试的   get   

Array.prototype.filter

filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

语法

var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])

参数

  • callback - 用来测试数组的每个元素的函数。返回 true 表示该元素通过测试,保留该元素,false 则不保留。它接受以下三个参数:
    • element - callback 数组中当前正在处理的元素。
    • index - 可选,callback 正在处理的元素在数组中的索引。
    • array - 可选,filter 方法调用的数组
  • thisArg - 可选,执行 callback 函数时值被用作 this。

返回值

一个新的、由通过测试的元素组成的数组,如果没有任何数组元素通过测试,则返回空数组。

Array.prototype.myFilter

Array.prototype.myFilter = function (callbackFn, thisArg) {
  // 处理回调类型异常
  if (Object.prototype.toString.call(callbackFn) != "[object Function]") {
    throw new TypeError(callbackFn + " is not a function");
  }
  var res = [];
  for (var i = 0, len = this.length; i < len; i++) {
    var exit = callbackFn.call(thisArg, this[i], i, this);
    exit && res.push(this[i]);
  }
  return res;
};

测试

const arr = [1, 2, 3, 4];

arr.myFilter((item) => item > 2); // [3, 4]

arr.myFilter("555"); // Uncaught TypeError: 555 is not a function

JS 手写之 Array.prototype.filter

标签:测试   tostring   lse   异常   ret   数组   cts   测试的   get   

原文地址:https://www.cnblogs.com/frank-link/p/14806916.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!