求数组的最小数、最大值,求一组数的平均数,sort函数详解,类数组转数组
求数组的最小值和最大值
//求数组当中最大值和最小值
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函数详解,类数组转数组的更多相关文章
- jmeter--函数助手对话框之参数详解
详解JMeter函数和变量 测试人员可以在JMeter的选项菜单中找到函数助手对话框("Function Helper"对话框),如图11-1所示. 图11-1 函数助手(Func ...
- JS reduce()方法详解,使用reduce数组去重
壹 ❀ 引 稍微有了解JavaScript数组API的同学,对于reduce方法至少有过一面之缘,也许是for与forEach太强大,或者filter,find很实用,在实际开发中我至始至终没使用过 ...
- PHP数组函数详解大全
一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...
- 循环(数组循环、获取json数据循环)、each()循环详解
return; // 退出循环(不满足,退出此次循环.下次满足条件,依然会走此循环)return false; //退出函数(退出所有) 一. 数组循环: html: <div class=&q ...
- jQuery数组($.grep,$.each,$.inArray,$.map)处理函数详解
1.jQuery.grep( array, function(elementOfArray, indexInArray) [, invert ] ) 描述: 查找满足过滤函数的数组元素.原始数组不受影 ...
- PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数详解
求两个数组的交集问题可以使用 array_intersect(),array_inersect_assoc,array_intersect_key来实现,其中 array_intersect()函数是 ...
- js数组的sort排序详解
<body> <div> sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 </div> <div id="showBox" ...
- jQuery数组($.each,$.grep,$.map,$.merge,$.inArray,$.unique,$.makeArray)处理函数详解
1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍jQuery对象的$().each()方法,此方法可用于例遍任何对象.回调函数拥有两个参数:第一个为对象的成员 ...
- 菜鸟学习-C语言函数参数传递详解-结构体与数组 分类: C/C++ Nginx 2015-07-14 10:24 89人阅读 评论(0) 收藏
C语言中结构体作为函数参数,有两种方式:传值和传址. 1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下 ...
随机推荐
- Hibernate基础学习(六)—Hibernate二级缓存
一.概述 Session的缓存是一块内存空间,在这个内存空间存放了相互关联的Java对象,这个位于Session缓存内的对象也被称为持久化对象,Session负责根据持久化对象的状态来同步更 ...
- Git基本操作命令
先配置用户和邮箱: Administrator@USER-20150302NL MINGW32 ~$ git config --global user.name "youname" ...
- ServerSuperIO 3.5版本的体系结构,以及未来规划的几点思考
一.特点 1.轻型高性能通信框架,适用于多种应用场,轮询模式.自控模式.并发模式和单例模式. 2.不仅是通讯框架,是设备驱动.IO通道.控制模式场景的协调机制. 3.支持协议驱动器,可以按规范写标准协 ...
- java 基础知识九 类与对象
java 基础知识九 类与对象 1.OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应 ...
- JavaScript 格式化时间
//格式化 yyyy-MM-dd hh:mm:ss function renderTime(date) { if (date == '' || date == null) { return ''; } ...
- 学习面向对象编程OOP 第一天
面向对象编程 Object Oriented Programming 一.什么是面向对象编程OOP 1.计算机编程架构; 2.计算机程序是由一个能够起到子程序作用的单元或者对象组合而成.也就是说由多个 ...
- struts2自定义日期类型转换器
在java web表单中提交的数据难免会有日期类型,struts2支持的日期类型是yyyy-MM-dd,如果是其他格式,就需要自己进行转换.比如yy-MM-dd 要完成自己定义的转换需要完成. 主要的 ...
- oracle备份与还原(导入导出)
Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp相当于oracle数据还原与备份.说明:大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的 ...
- vue2.0仿今日头条开源项目
vue-toutiao 这是用 vue.js 2.0 高仿 今日头条 的移动端项目,结合了原生app的部分功能以及网页版. 前言 本人是 今日头条 的重度用户,在学习vue.js过程中,在GitHub ...
- 在国内使用maven下载jar包非常慢的解决方法
在国内使用maven下载jar包非常慢的解决方法 1.原因: 很多jar包在国外环境,所以会很慢. 2.解决方法 maven支持镜像环境下载,所以首先找到maven的conf目录中的settings. ...