api使用
手写api
Array.prototype.my_reduce = function(callback, init) {
if(Array.isArray(this) || !this.length || typeof callback !== 'function') {
return []
}else {
let val = init !== undefined ? init : this[0] // 数组第一项
for(let i= init !== undefined ? 0 : 1; i<this.length; i++) {
callback(val, this[i], i, this)
}
return val
}
}
js 数组操作api
-
检测数组「确定某个对象是不是数组」
arr instanceof Array
Array,isArray(arr) -
转换方法
arr.toLocalString()
arr.toString() // 字符串拼接,逗号分隔的字符串"3,4,1"
arr.valueOf() // 返回数组本身 -
栈/队列方法「改变原数组」
arr.push()/pop() arr.shift()/push() -
排序方法「改变原数组」
arr.sort() // sort会调用数组每一项的toString()方法,比较的是字符串
arr.reverse() -
操作方法
arr.splice(开始,删除的项数,插入的项)「改变原数组」
// arr.splice(删除开始项, 删除的项数)
// arr.splice(开始,0, 插入的项)arr.slice(开始,结束) // 参数为负数,则用长度+负数;slice(-2,-1)长度为5=>slice(3,4)
arr.concat()
arr.join(‘’) -
位置方法
arr.indexOf()
arr.lastIndexOf()
arr.inclues() -
迭代方法「对数组的每一项运行给定的函数」
arr.forEach(函数, 数组本身) // 本质上和for循环迭代数组一样,但不能用break结束循环
arr.map() // 返回每次函数调用结果组成的数组
arr.some()
arr.every()
arr,filter() // 返回函数运行结果中值为true的项组成的数组 -
归并方法「迭代数组所有项,构建一个最终的返回值」
arr.reduce(函数, 初始值)
arr.reduceRight(函数, 初始值)