求数组的最小值和最大值

 //求数组当中最大值和最小值
var arr=[3,2,6,1,45,23,456,23,2,6,3,45,37,89,30];
//第一种方法 根据排序方法来求最大值和最小值 从小到大排序 第0位就是最小值 最后一位就是最大值
arr.sort(function(a,b){
return a-b; //按从小大的情况排序
//return b-a; 按从大到小的情况排序
})
console.log(arr);
var min=arr[0];
var max=arr[arr.length-1];
console.log(min,max);// 1,456 var arr=[3,2,6,1,45,23,456,23,2,6,3,45,37,89,30];
//第二种方法 根据每个数组元素进行比较 假设第一个最大或最小 然后跟后面的元素进行比较
var min=arr[0];
var max=arr[0];
for(var i=0;i<arr.length;i++){
arr[i]<min?min=arr[i]:min;
arr[i]>max?max=arr[i]:max;
}
console.log(min,max); // 1,456 //第三种方法 根据Math.max,Math.min以及apply传参
var min=Math.min.apply(window,arr);
var max=Math.max.apply(window,arr);
console.log(min,max); //第四种方法 根据Math.max,Math.min和evel
//eval('string') 转换字符串成表达式
var min=eval('Math.min('+arr.toString()+')');
var max=eval('Math.max('+arr.toString()+')');
console.log(min,max);

写一个函数,功能就是求参数中的平均数,里面涉及到arguments这个类数组   并且把这个类数组转换成数组   然后利用数组的方法进行求平均数

 //求一组数的平均数,去掉最小数和最大数   求数组的平均数
//利用数组原型链上的slice克隆数组功能及call改变this,以及sort进行排序去掉最大值及最小值
function avgFn(){
var arr=Array.prototype.slice.call(arguments); //借用slice克隆的功能把arguments这个类数组转换成数组
arr.sort(function(a,b){
return a-b;
})
arr.shift(); //去除数组的首位
arr.pop(); //去除数组的尾位
return (eval(arr.join('+'))/arr.length).toFixed(2);
}
console.log(avgFn(8.0,3.0,5.0,4.0,5.5,6.5,8,4.0,5.5));

再写一种方法    更加对call的用法的理解  以及对类数组转换成数组的理解

 function avgFn(){
Array.prototype.sort.call(arguments,function(a,b){
return a-b;
});
Array.prototype.shift.call(arguments);
Array.prototype.pop.call(arguments);
return (eval(Array.prototype.join.call(arguments,'+'))/arguments.length).toFixed(2);
}
console.log(avgFn(8.0,3.0,5.0,4.0,5.5,6.5,8,4.0,5.5));

再写点注意的事情:在IE6至IE8中    对 arguments 这个类数组转换成数组是兼容的   但对元素集合以及节点集合这样的类数组存在不兼容   那么怎么办呢   老老实实用for循环吧   那么怎么去兼容页面吗?可以  用  try{} catch(e){}    这个来判断是非兼容。

再细讲一下sort方法吧

 var arr=[2,3,45,6,45,67,56,6,56,789,55,45,43,45];
//arr.sort(); 这个方法只对10以内的数字才会有效 比如说 它会认为8>76
arr.sort(function(a,b){
return a-b; //意思就是从小排到大 用另外一种意思理解 就是 return 大于0的 就是从小排到大 ,小于0 就是大排到小
//如果想打乱一个数组 那么return Math.random()-0.5 就OK了。
})
//ok,都是一些数字的排序 有啥意思 如果是中文字符串呢 那么怎么排序呢
//那就放神器了 localeCompare() 这个就是可以把中文字符串转换成拼音字符串然后进行比较 前面字符串小于括号中的字符串那就是返回1 还是看代码吧
arr=['徐文童鞋','博客园童鞋','张三','李四'];
arr.sort(function(a,b){
return a.localeCompare(b);
})
console.log(arr);//(4) ["博客园童鞋", "张三", "徐文童鞋", "李四"]

求数组的最小数、最大值,求一组数的平均数,sort函数详解,类数组转数组的更多相关文章

  1. jmeter--函数助手对话框之参数详解

    详解JMeter函数和变量 测试人员可以在JMeter的选项菜单中找到函数助手对话框("Function Helper"对话框),如图11-1所示. 图11-1 函数助手(Func ...

  2. JS reduce()方法详解,使用reduce数组去重

     壹 ❀ 引 稍微有了解JavaScript数组API的同学,对于reduce方法至少有过一面之缘,也许是for与forEach太强大,或者filter,find很实用,在实际开发中我至始至终没使用过 ...

  3. PHP数组函数详解大全

    一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...

  4. 循环(数组循环、获取json数据循环)、each()循环详解

    return; // 退出循环(不满足,退出此次循环.下次满足条件,依然会走此循环)return false; //退出函数(退出所有) 一. 数组循环: html: <div class=&q ...

  5. jQuery数组($.grep,$.each,$.inArray,$.map)处理函数详解

    1.jQuery.grep( array, function(elementOfArray, indexInArray) [, invert ] ) 描述: 查找满足过滤函数的数组元素.原始数组不受影 ...

  6. PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数详解

    求两个数组的交集问题可以使用 array_intersect(),array_inersect_assoc,array_intersect_key来实现,其中 array_intersect()函数是 ...

  7. js数组的sort排序详解

    <body> <div> sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 </div> <div id="showBox" ...

  8. jQuery数组($.each,$.grep,$.map,$.merge,$.inArray,$.unique,$.makeArray)处理函数详解

    1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍jQuery对象的$().each()方法,此方法可用于例遍任何对象.回调函数拥有两个参数:第一个为对象的成员 ...

  9. 菜鸟学习-C语言函数参数传递详解-结构体与数组 分类: C/C++ Nginx 2015-07-14 10:24 89人阅读 评论(0) 收藏

    C语言中结构体作为函数参数,有两种方式:传值和传址. 1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下 ...

随机推荐

  1. 可以随鼠标拖拽的div

    可以拖拽的div <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  2. 面试题(二)—Java基础(下)

    一.进程和线程 进程 (1)正在运行的程序,是系统进行资源分配和调用的独立单位. (2)每一个进程都有它自己的内存空间和系统资源. 线程 (1)是进程中的一条执行路径. (2)一个进程如果只有一条执行 ...

  3. Linux 入门笔记

    一开始对linux总有些抵触,黑黑的命令框不知道如何下手,这次因为工作交接的缘故需要负责之前同事的Node后端部分,node,redis这些都是部署在Linux上的,看了几次运维的同学噼里啪啦的敲命令 ...

  4. AngularJS路由跳转

    AngularJS是一个javascript框架,通过AngularJS这个类库可以实现目前比较流行的单页面应用,AngularJS还具有双向数据绑定的特点,更加适应页面动态内容. 所谓单页面应用就是 ...

  5. Sql server DATEADD日期函数的使用

    DATEADD日期函数 DATEADD() 函数在日期中添加或减去指定的时间间隔. 日:在当前日期上加两天 , ,'2014-12-30') 月:在当前日期上加两个月 , , 年:在当前日期上加两年 ...

  6. iptables配置详解

    iptables主要参数 -A 向规则链中添加一条规则,默认被添加到末尾 -T指定要操作的表,默认是filter -D从规则链中删除规则,可以指定序号或者匹配的规则来删除 -R进行规则替换 -I插入一 ...

  7. 告别findViewById(),ButterKnife,使用Google Data Binding Library(1)

    Data Binding Library 用数据绑定编写声名性布局,可以最大限度的减少findViewById(),setOnClickListener()之类的代码.并且比起findViewById ...

  8. Vue.js动画在项目使用的两个示例

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 李萌,16年毕业,Web前端开发从业者,目前就职于腾讯,喜欢node.js.vue.js等技术,热爱新技术,热 ...

  9. 保证Android后台不被杀死的几种方法

    由于各种原因,在开发Android应用时会提出保证自己有一个后台一直运行的需求,如何保证后台始终运行,不被系统因为内存低杀死,不被任务管理器杀死,不被软件管家等软件杀死等等还是一个比较困难的问题.网上 ...

  10. Stimulsoft报表操作笔记(一):统计

    一.引言 报表大家应该都知道是什么,简单来说就是用表格.图表等格式来动态显示数据.现在web系统中很多需要使用到报表统计.打印功能等,将所需用到的数据绑定到指定的位置,然后分类汇总,这样查看起来更清晰 ...