Array原生方法实现

2/2/2023 js

# 1. 数组迭代

function map(arr, cb) {
	if (!Array.isArray(arr) || typeof cb != 'function') return []

	let ret = []
	for (let i = 0; i < arr.length; i++) {
		ret.push(cb(arr[i], i, arr))
	}
	return ret
	// 对于forEach这里为一行代码:for (let i = 0; i < arr.length; i++) cb(arr[i], i, arr)
}

function filter(arr, cb) {
	if (!Array.isArray(arr) || typeof cb != 'function') return []

	let ret = []
	for (let i = 0; i < arr.length; i++) {
		cb(arr[i], i, arr) && ret.push(arr[i])
	}
	return ret
	// 对于find这里为一行代码:for (let i = 0; i < arr.length; i++) if(cb(arr[i], i, arr)) return arr[i]
}

function every(arr, cb) {
	if (!Array.isArray(arr) || typeof cb != 'function') return false

	for (let i = 0; i < arr.length; i++) if (!cb(arr[i], i, arr)) return false
	return true

	//** 对于some这里为两行代码:
	for (let i = 0; i < arr.length; i++) if (cb(arr[i], i, arr)) return true
	return false
	//**
}

function reduce(arr, cb, init) {
	if (!Array.isArray(arr) || typeof cb != 'function') return undefined

	let ret = init || arr[0]
	for (let i = init ? 0 : 1; i < arr.length; i++) ret = cb(ret, arr[i], i, arr)
	return ret
}

待更新

    爱自己,
    是终身浪漫的开始。
    红莲华
    x
    loading...