zoukankan      html  css  js  c++  java
  • JavaScript——实现一些常用函数

    前言

    如题,实现一些常用的函数,一个小练习;

    内容

    forEach

    /**
     * foreach
     * @param {*} array 
     * @param {*} fn 
     */
    function forEach(array, fn) {
        for (let index = 0; index < array.length; index++) {
           fn(array[index]) 
        }
    }
    
    // test
    let array = [1,2,3,4,5]
    
    forEach(array, function name(params) {
        console.log(params);
    })
    
    

    fliter

    /**
     * fliter
     * @param {*} array 
     * @param {*} fn 
     * @returns 
     */
    function fliter (array, fn) {
        let res = []
        for (let index = 0; index < array.length; index++) {
           if (fn(array[index])) {
               res.push(array[index])
           }
        }
        return res
    }
    
    // test
    let arr = [1,2,3,4,5]
    let r = fliter(arr, function name(params) {
        return params % 2 === 0
    })
    console.log(r);
    

    makeFun

    /**
     * makeFun
     * @param {*} params 
     * @returns 
     */
    function makeFn(params) {
        let msg = "hello fn"
        return function name(params) {
            console.log(msg);
        }
    }
    
    // test
    const fn = makeFn()
    fn()
    
    makeFn()()
    

    once

    /**
     * once
     * @param {*} fn 
     * @returns 
     */
    function once(fn) {
        let done = false
        return function name(params) {
            if (!done) {
                done = true
               return fn.apply(this, arguments)
            }
        }
    }
    
    // test
    let pay = once(function (money) {
        console.log(`支付: ${money}`);
    })
    
    pay(5)
    pay(4)
    pay(3)
    

    map

    /**
     * map
     * @param {*} array 
     * @param {*} fn 
     * @returns 
     */
    const map = (array, fn) => {
        let res = []
        for (const value of array) {
            res.push(fn(value))
        }
        return res
    }
    
    // test
    let arr = [1,2,3,4]
    arr = map(arr, v => v * v )
    console.log(arr);
    

    onece

    /**
     * every
     * @param {*} array 
     * @param {*} fn 
     * @returns 
     */
    const every = (array, fn) => {
        let res = []
        for (const value of array) {
            res = fn(value)
            if (!res) {
                break
            }
        }
        return res
    }
    
    // test
    let arr = [11,12,16, 1]
    let r = every(arr, v => v > 10)
    console.log(r);
    

    some

    /**
     * some
     * @param {*} array 
     * @param {*} fn 
     * @returns 
     */
    const some = (array, fn) => {
        let res = false
        for (const value of array) {
            res = fn(value)
            if (res) {
                break
            }
        }
        return res
    }
    
    let arr = [1, 2, 3, 4]
    let r = some(arr, v => v % 2 === 0)
    console.log(r);
    
    学无止境,谦卑而行.
  • 相关阅读:
    css点滴3—5种方式实现圆环
    css点滴2—六种方式实现元素水平居中
    css点滴1—八种方式实现元素垂直居中
    当我们在讨论CQRS时,我们在讨论些神马?
    CSDN屏蔽广告
    手撸一套纯粹的CQRS实现
    【转】CAP 定理的含义
    【转】浅谈命令查询职责分离(CQRS)模式
    Castle DynamicProxy基本用法(AOP)
    【转】面向对象设计的SOLID原则
  • 原文地址:https://www.cnblogs.com/wangyang0210/p/15257278.html
Copyright © 2011-2022 走看看