手动实现js api「reduce」

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(函数, 初始值)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值