function map(arr, cb) {
let ret = []
for (let i = 0; i < arr.length; i++) ret.push(cb(arr[i], i, arr))
return ret
}
function forEach(arr, cb) {
for (let i = 0; i < arr.length; i++) cb(arr[i], i, arr)
}
function filter(arr, cb) {
let ret = []
for (let i = 0; i < arr.length; i++) cb(arr[i], i, arr) && ret.push(arr[i])
return ret
}
function indexOf(arr, item) {
for (let i = 0; i < arr.length; i++) if (arr[i] === item) return i
return -1
}
function includes(arr, item) {
for (let _item of arr) if (_item === item) return true
return false
}
function find(arr, cb) {
for (let i = 0; i < arr.length; i++) if (cb(arr[i], i, arr)) return arr[i]
return undefined
}
function reduce(arr, cb, preNum) {
// arr.reduce((pre,cur)=>{ ... }, preNum)
let ret = undefined
let pre = preNum !== undefined ? preNum : arr[0]
let cur = undefined
for (let i = preNum !== undefined ? 0 : 1; i < arr.length; i++) {
cur = arr[i]
ret = cb(pre, cur)
pre = ret
}
return ret
}
function concat(arr, ..._arr) {
// 考虑到有两种情况: arr.concat([1,2,3])和arr.concat(1,2,3)
return [...arr, ..._arr]
}
function push(arr, item) {
arr.length++
arr[arr.length - 1] = item
}
function unshift(arr, item) {
arr.length++
for (let i = arr.length - 1; i > 0; i--) [arr[i], arr[i - 1]] = [arr[i - 1], arr[i]]
arr[0] = item
}
function pop(arr) {
if (!arr.length) return
let ret = arr[arr.length - 1]
arr.length--
return ret
}
function shift(arr) {
if (!arr.length) return
let ret = arr[0]
for (let i = 0; i < arr.length - 1; i++) [arr[i], arr[i + 1]] = [arr[i + 1], arr[i]]
arr.length--
return ret
}
待更新