求数组的最小值和最大值

 //求数组当中最大值和最小值
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. 手机自动化测试:appium源码分析之bootstrap八

    手机自动化测试:appium源码分析之bootstrap八   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣, ...

  2. 职责链模式(Chain of Responsibility)的Java实现

    职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它 ...

  3. mysql 主从同步 实现增量备份

    数据库复制 replication 的实现原理 1:主服务器凡运行语句,都产生一个二进制日志 binlog 2:从服务器不断读取主服务器的binlog 3:从主服务读取到的binlog,转换为自身可执 ...

  4. 微信端解决a标签链接 失效的问题

    最近常碰到这个问题就是 在微信端点击a标签链接的时候,第一次正常界面跳转.但是,界面重新跳转回来再次点击a标签的话 .出现 界面不跳转,但是进度条加载完毕,点击多次页面无法跳转. 解决办法 在链接后边 ...

  5. 前端代码组织优化--小demo(进阶你的思路)

    事出必有因 最近在看老项目的代码,一个富客户端的js代码,几千行的代码,全是function(){} var...的垂直布局,真的是要感动的哭了. 一开始都是这样,想实现什么功能,不管三七二十一,fu ...

  6. 1.6 在WHERE子句中引用取别名的列

    如下查询,会抛出错误:mysql> select sal as salary, comm as commission from emp where salary < 5000;ERROR ...

  7. WEB认证模式:Basic & Digest

    一. HTTP Basic 客户端以" : "连接用户名和密码后,再经BASE64加密通过Authorization请求头发送该密文至服务端进行验证,每次请求都需要重复发送该密文. ...

  8. 篇2 安卓app自动化测试-初识python调用appium

    篇2              安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...

  9. PHP怎么打开或者关闭文件?

    什么是文件处理? 文件处理包括读取,关闭,重写等.掌握文件的处理需要读者理清思路,掌握好文件处理的关键步骤和常用函数,那么就可以运用自如了!感兴趣的请移步php文件处理专题. 比如,访问一个文件需要 ...

  10. HTML+CSS--position大法好

    其实在HTML和CSS的学习中,css的position属性应该是难点之一,难在你需要静下心来仔细搞清楚它的每一个值的意义.效果和用法.但是它的功能很强大,效果也是很令人惊艳的,因为你可以用它去实现一 ...