手写原生数组实现原理

手写数组中map()方法

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
模拟一个map方法,返回数组中每个元素的二次方

const map = (array, fn)=>{
    let results = []
    for(let value of array) {
        results.push(fn(value))
    }
    return results
}
let array = [1,3,5,6]
let arr = map(array, v => v * v)
console.log(arr) // [ 1, 9, 25, 36 ]

—————————————————————————————

手写数组的every方法

very() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。

const every = (array, fn) => {
    let results = true
    for(let item of array) {
            results = fn(item)
        if(!results){
            break
        }
    }
    return results
}
let arr = [11,12,5,16]
let e = every(arr, v => v > 10)
console.log(e) // true

—————————————————————————————

手写数组的some方法

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。

some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。

const some = (array, fn) => {
    let results = false
    for (let value of array) {
        results = fn(value)
        if(results) {
            break
        }
    }
    return results
}

let arr = [5,7,9,15,13]
let s = some(arr, v => v % 2 === 0)
console.log(s)

通过自己手动对原生方法的实现,可以让我们明白高阶函数的使用方式

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值