js原生方法reduce实现
2024-10-19 23:34:05
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="author" content="杨欣">
<title>reduce</title>
</head>
<body>
<script>
Array.prototype.my_reduce = function (callback, initialValue) {
if (!Array.isArray(this) || !this.length || typeof callback !== 'function') {
return []
} else {
// 判断是否有初始值
let hasInitialValue = initialValue !== undefined;
let value = hasInitialValue ? initialValue : tihs[0];
for (let index = hasInitialValue ? 0 : 1; index < this.length; index++) {
const element = this[index];
value = callback(value, element, index, this)
}
return value
}
}
let arr = [1, 2, 3, 4, 5]
let res = arr.my_reduce((pre, cur, i, arr) => {
console.log(pre, cur, i, arr)
return pre + cur
}, 10)
console.log(res)//25
</script>
</body>
</html>
最新文章
- HTML5滑动(swipe)事件
- 内存角度探寻C++面向对象 之 继承、多态
- iOS应用架构谈 开篇
- Kanzi UI Solution
- Haskell 与范畴论
- python 练习24
- MySQL 跳过同步错误方法
- WebService教程和分析
- jdbc - 连接数据库的url
- cocos2d-x项目过程记录(ios和android设备的适配)
- linux中/etc与/var目录,各是什么意思?这两个目录下的文件有什么特点?
- jQuery实现发送验证码倒计时60秒
- 关于hosts文件的原理与制作
- Akka(39): Http:File streaming-文件交换
- 理解Activity.runOnUiThread()
- bzoj 4006: [JLOI2015]管道连接
- oss web直传
- 简单js 切换左侧栏目的样式
- 附005.Docker Compose文件详解
- 混合模式为什么成为占有率最高的app开发技术