js数组方法扩展实现数组统计函数


Posted in Javascript onApril 09, 2014
/****************************************************
*CreateBy:joe zhou
*Description:数组统计函数
****************************************************/
$.extend({
    max: function (arr) {
        return cacl(arr, function (item, max) {
            if (!(max > item)) {
                return item;
            }
            else {
                return max;
            }
        });
    },
    min: function (arr) {
        return cacl(arr, function (item, min) {
            if (!(min < item)) {
                return item;
            }
            else {
                return min;
            }
        });
    },
    sum: function (arr) {
        return cacl(arr, function (item, sum) {
            if (typeof (sum) == 'undefined') {
                return item;
            }
            else {
                return sum += item;
            }
        });
    },
    avg: function (arr) {
        if (typeof (arr) == 'undefined' || arr.length == 0) {
            return 0;
        }
        return this.sum(arr) / arr.length;
    }
});$.fn.extend({
    max: function () {
        return $.max(this.get());
    },
    min: function () {
        return $.min(this.get());
    },
    sum: function () {
        return $.sum(this.get());
    },
    avg: function () {
        return $.avg(this.get());
    }
});
function cacl(arr, callback) {
    var ret;
    for (var i=0; i<arr.length;i++) {
        ret = callback(arr[i], ret);
    }
    return ret;
}
Array.prototype.max = function () {
    return cacl(this, function (item, max) {
        if (!(max > item)) {
            return item;
        }
        else {
            return max;
        }
    });
};
Array.prototype.min = function () {
    return cacl(this, function (item, min) {
        if (!(min < item)) {
            return item;
        }
        else {
            return min;
        }
    });
};
Array.prototype.sum = function () {
    return cacl(this, function (item, sum) {
        if (typeof (sum) == 'undefined') {
            return item;
        }
        else {
            return sum += item;
        }
    });
};
Array.prototype.avg = function () {
    if (this.length == 0) {
        return 0;
    }
    return this.sum(this) / this.length;
};
Javascript 相关文章推荐
Prototype使用指南之array.js
Jan 10 Javascript
javascript 精粹笔记
May 09 Javascript
JavaScript 参数中的数组展开 [译]
Sep 21 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
May 08 Javascript
javascript 实现 原路返回
Jan 21 Javascript
Vue自定义事件(详解)
Aug 19 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
Vue Element使用icon图标教程详解(第三方)
Feb 07 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
Sep 14 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
Sep 26 Javascript
vue 限制input只能输入正数的操作
Aug 05 Javascript
jquery实现pager控件示例
Apr 09 #Javascript
模拟用户点击弹出新页面不会被浏览器拦截
Apr 08 #Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
Apr 08 #Javascript
js定时调用方法成功后并停止调用示例
Apr 08 #Javascript
jquery选择器使用详解
Apr 08 #Javascript
jquery淡化版banner异步图片文字效果切换图片特效
Apr 08 #Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
Apr 08 #Javascript
You might like
PHP 输出缓存详解
2009/06/20 PHP
PHP学习之数组值的操作
2011/04/17 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
ionic3 懒加载
2017/08/16 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
python数据结构之二叉树的遍历实例
2014/04/29 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
装饰工程师岗位职责
2014/06/08 职场文书
公司考勤管理制度
2015/08/04 职场文书
食品卫生管理制度
2015/08/06 职场文书
财务人员入职担保书
2015/09/22 职场文书
靠谱的活动总结
2019/04/16 职场文书
诚信高考倡议书
2019/06/24 职场文书
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers