求数组的最小数、最大值,求一组数的平均数,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.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下 ...
随机推荐
- Android自定义View之音频条形图
2016-04-12 17:52 76人阅读 评论(2) 收藏 举报 分类: Android(26) 版权声明:本文为博主原创文章,未经博主允许不得转载. 新建项目,新建MusicRectangl ...
- eclipse中配置drools6.5环境
1.去官网下载两个压缩包 2.解压两个压缩包,依次进入droolsjbpm-tools-distribution-6.5.0.Final\droolsjbpm-tools-distribution-6 ...
- 通过UDP广播实现Android局域网Peer Discovering
本文是对个人笔记中内容的整理,部分代码及图片来自互联网,由于不好找到原始出处,所以未加注明. 如有痛感,联系删除. 本文将介绍以下知识点: TCP与UDP的区别: 单播.多播.广播: Java中实现U ...
- Kafka0.10.2.0分布式集群安装
一.依赖文件安装 1.1 JDK 参见博文:http://www.cnblogs.com/liugh/p/6623530.html 1.2 Scala 参见博文:http://www.cnblogs. ...
- hadoop、Storm该选哪一个
如果hadoop.Storm还感觉混要,那么此篇文章将帮助你把他们完全区分 可以带着下面问题来阅读本文章: 1.hadoop.Storm各是什么运算 2.Storm为什么被称之为流式计算系统 3.ha ...
- Linux下deb包安装工具(附带安装搜狗输入法)
环境是在ubuntu14下的 #1.gdebi安装 使用deb安装工具gdebi,这个工具能解决所有依赖问题 sudo apt-get install gdebi #2.搜狗输入法 deb包下载地址: ...
- pixi.js
添加基本文件(库文件) 渲染库 pixi.js pixi.lib.js是pixi.js的子集,依赖class.js,cat.js,event_emiter.js文件 pixi.scroller.js ...
- oracle 的 SDO_GEOMETRY
元数据定义 CREATE OR REPLACE TYPE MDSYS.SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_P ...
- Patterns for application development with ASP.NET Core
此文章翻译自 NDC { London } 16-20 January 2017 上, Damian Edwards和David Fowler的演讲,如果翻译不周,请大家指出错误. Logging 生 ...
- Virtualbox mac版centos7.2 安装共享文件夹
因为用的是mac本,在自己电脑上用virtualbox安装了centos7.2 虚拟机,为了实现与本机交换文件,需要用到贡享文件夹功能. 网上搜的时候多是windows版的,所以自己写一个mac版的. ...