- map(): 返回一个由回调函数的返回值组成的新数组
- filter(): 将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回
- find(): 找到第一个满足测试函数的元素并返回那个元素的值,如果找不到,则返回 undefined。
- findIndex(): 找到第一个满足测试函数的元素并返回那个元素的索引,如果找不到,则返回 -1。
- every(): 如果数组中的每个元素都满足测试函数,则返回 true,否则返回 false。
- some(): 如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false。
- reduce(): 从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值
/* 实现map()*/export function map (array, callback) { const arr = [] for (let i = 0; i < array.length; i++) { arr.push(callback(array[i], i)) } return arr}/* 实现filter()*/export function filter(array, callback) { const arr = [] for (let i = 0; i < array.length; i++) { if (callback(array[i], i)) { arr.push(array[i]) } } return arr}/* 实现find()*/export function find (array, callback) { for (let i = 0; i < array.length; i++) { if (callback(array[i], i)) { return array[i] } } return undefined}/* 实现findIndex()*/export function findIndex (array, callback) { for (let i = 0; i < array.length; i++) { if (callback(array[i], i)) { return i } } return -1} 实现every() */ export function every (array, callback) { for (let i = 0; i < array.length; i++) { if (!callback(array[i], i)) { // 只有一个结果为false, 直接返回false return false } } return true}/* 实现some()*/export function some (array, callback) { for (let i = 0; i < array.length; i++) { if (callback(array[i], i)) { // 只有一个结果为true, 直接返回true return true } } return false}/* reduce()*/function reduce(array, callback, initValue) { let acc = initValue; let startAtIndex = 0; if (initValue === undefined) { acc = array[0]; startAtIndex = 1; } for (let i = startAtIndex; i < array.length; i++) { acc = callback(acc, array[i], i, array) } return acc;}