51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

JavaScript-高阶函数小练习

代码展示 {#%E4%BB%A3%E7%A0%81%E5%B1%95%E7%A4%BA}

class Person {
    constructor(name, age) {
        this.name = name
        this.age = age
    }
}

const personArr = \[
new Person("孙悟空", 18),
new Person("沙和尚", 38),
new Person("红孩儿", 8),
new Person("白骨精", 16),
\]


function filter(arr, cb) {
const newArr = \[\]


    for (let i = 0; i < arr.length; i++) { 
        if (cb(arr[i])) {   
            newArr.push(arr[i]) 
        }
    }

    return newArr 




}


result = filter(personArr, a =\> a.name === "孙悟空")
result = filter(personArr, a =\> a.age \>= 18)


const arr = \[1, 2, 3, 4, 5, 6, 7, 8, 9, 10\]
result = filter(arr, a =\> a % 2 === 0)

`console.log(result)`

function someFn() {
    return "hello"
}

function outer(cb){
    return () => {
        console.log("记录日志~~~~~")
        const result = cb()
        return result
    }
}

let result = outer(someFn)

// console.log(result)


function test(){
    console.log("test~~~~")
    return "test"
}

let newTest = outer(test)

newTest()

第一个代码片段(filter 函数) {#%E7%AC%AC%E4%B8%80%E4%B8%AA%E4%BB%A3%E7%A0%81%E7%89%87%E6%AE%B5%EF%BC%88filter-%E5%87%BD%E6%95%B0%EF%BC%89}

这个片段定义了一个 filter 函数,它接受一个数组和一个回调函数作为参数。

filter 函数遍历数组,对每个元素调用回调函数进行测试,然后返回一个新数组,其中包含所有通过测试的元素。这个功能类似于 JavaScript 内置的 Array.prototype.filter 方法。

function filter(arr, cb) {
    const newArr = [];
    for (let i = 0; i < arr.length; i++) {
        if (cb(arr[i])) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

第二个代码片段(outer 函数) {#%E7%AC%AC%E4%BA%8C%E4%B8%AA%E4%BB%A3%E7%A0%81%E7%89%87%E6%AE%B5%EF%BC%88outer-%E5%87%BD%E6%95%B0%EF%BC%89}

这个片段定义了一个 outer 函数,它接受一个回调函数 cb 作为参数,并返回一个新的函数。

这个新函数在执行时会先记录日志,然后调用 cb 并返回其结果。这个模式通常用于在函数执行前后添加额外的逻辑,例如日志记录、性能监控等。

function outer(cb) {
    return () => {
        console.log("记录日志~~~~~");
        const result = cb();
        return result;
    };
}

不同点 {#%E4%B8%8D%E5%90%8C%E7%82%B9}

  1. 用途不同

    • filter 函数用于数组过滤,生成一个新数组。

    • outer 函数用于在回调函数执行前后添加额外的逻辑。

  2. 参数和返回值

    • filter 接受一个数组和一个回调函数作为参数,返回一个新数组。

    • outer 接受一个回调函数作为参数,返回一个新的函数。

  3. 实现细节

    • filter 内部使用 for 循环遍历数组,并根据回调函数的返回值决定是否将元素添加到新数组中。

    • outer 返回一个新的匿名函数,该函数在执行时会先记录日志,然后调用并返回回调函数的结果。


赞(0)
未经允许不得转载:工具盒子 » JavaScript-高阶函数小练习