JavaScript——实现一些常用函数

简介: 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);

学无止境,谦卑而行.

目录
相关文章
|
26天前
|
前端开发 JavaScript 开发者
揭秘JavaScript魔法三剑客:call、apply、bind,解锁函数新世界,你的前端之路因它们而精彩!
【8月更文挑战第23天】在 JavaScript 的世界里,`call`、`apply` 和 `bind` 这三个方法常常让新手感到困惑。它们都能改变函数执行时的上下文(即 `this` 的指向),但各有特点:`call` 接受一系列参数并直接调用函数;`apply` 则接收一个参数数组,在处理不确定数量的参数时特别有用;而 `bind` 不会立即执行函数,而是创建一个新版本的函数,其 `this` 上下文已被永久绑定。理解这三个方法能帮助开发者更好地运用函数式编程技巧,提升代码灵活性和可维护性。
27 0
|
15天前
|
JavaScript 前端开发
JavaScript基础知识-函数的返回值
关于JavaScript函数返回值的基础知识。
19 9
JavaScript基础知识-函数的返回值
|
15天前
|
JavaScript 前端开发
JavaScript基础知识-函数的参数
关于JavaScript函数参数基础知识的介绍。
16 4
JavaScript基础知识-函数的参数
|
15天前
|
JavaScript 前端开发
JavaScript基础知识-立即执行函数
关于JavaScript基础知识中立即执行函数的介绍。
15 2
JavaScript基础知识-立即执行函数
|
13天前
|
JavaScript 前端开发
JavaScript 函数
JavaScript 函数
21 9
|
14天前
|
JavaScript 前端开发
前端JS函数
【9月更文挑战第4天】前端JS函数
20 6
|
11天前
|
存储 JavaScript 前端开发
JS中的数组有哪些常用操作函数和属性
【9月更文挑战第7天】JS中的数组有哪些常用操作函数和属性
9 1
|
1月前
|
JavaScript 前端开发
JavaScript基础&实战(4)js中的对象、函数、全局作用域和局部作用域
这篇文章介绍了JavaScript中对象的基本概念和操作,包括对象属性和方法的使用、对象字面量的创建、函数的定义和作用域的概念,以及全局作用域和局部作用域的区别和特性。
JavaScript基础&实战(4)js中的对象、函数、全局作用域和局部作用域
|
18天前
|
自然语言处理 JavaScript 前端开发
|
24天前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题