一. 定义

**filter()**方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

二. 用法

**filter()**方法使用指定函数检测数组中的所有元素:

  • 如果元素满足条件,则加入结果数组。
  • 如果元素不满足条件,则不加入结果数组。

注意:

  • **filter()** 不会对空数组进行检测。
  • **filter()** 不会改变原始数组。

    三. 手写代码

    1. Array.prototype.newFilter = function(fn){
    2. let arr = this;
    3. let result = [];
    4. for(let i=0; i<arr.length; i++){
    5. if(fn(arr[i])){
    6. result.push(arr[i]);
    7. }
    8. }
    9. return result;
    10. }

    四. 测试代码

    ```javascript const arr = [ {id: 0, name: “0”}, {id: 1, name: “1”}, {id: 2, name: “2”},
    {id: 3, name: “3”} ];

console.log(arr.filter(item => item.id > 1)); // [ { id: 2, name: ‘2’ }, { id: 3, name: ‘3’ } ] console.log(arr.newFilter(item => item.id > 1)); // [ { id: 2, name: ‘2’ }, { id: 3, name: ‘3’ } ]

console.log(arr.filter(item => item.id > 3)); // [] console.log(arr.newFilter(item => item.id > 3)); // [] ```