filter()方法不会对空数组进行检测,不会改变原始数组

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

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

语法:

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

参数:

返回值:

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

当要过滤的数组是对象数组的时候,修改新返回来的对象数组属性的时候同时也修改了原来的对象数组,例如下面的代码


    let arr = [{
        id: 1,
        name: 9999,
    },
        {
            id: 2,
            name: 32,
        },
        {
            id: 3,
            name: 22334,
        },
        {
            id: 4,
            name: 99993,
        },
        {
            id: 5,
            name: 99995,
        },
        {
            id: 6,
            name: 99996,
        },
    ]
    let res = arr.filter((element, index) => {
        return element.id % 2 === 0;
    })
    res[0].name = 8
    console.log(arr)
    console.log(res)

当要过滤的数组是纯数组的时候,修改过滤后的新数组,原来的数组不会改变,例如下面的例子

    let arr = [1, 2, 3, 4, 5, 6]
    let res = arr.filter((element, index) => {
        return element % 2 === 0;
    })
    res[0] = 8
    console.log(arr)
    console.log(res)

 

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐