求数组的最小数、最大值,求一组数的平均数,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.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下 ...
随机推荐
- 手机自动化测试:appium源码分析之bootstrap七
手机自动化测试:appium源码分析之bootstrap七 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试 ...
- 性能调优:mysql之left join
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...
- CSS基础布局--居中对齐,左侧定宽右侧自适应
CSS页面布局是web前端开发的最基本的技能,本文将介绍一些常见的布局方法,涉及到盒子布局,column布局,flex布局等内容.本文中,你可以看到一些水平垂直居中的方法,左侧固定宽度,右侧自适应的一 ...
- Nodejs express 获取url参数,post参数的三种方式
express获取参数有三种方法:官网实例: Checks route params (req.params), ex: /user/:id Checks query string params (r ...
- ElasticSearch Index API && Mapping
ElasticSearch NEST Client 操作Index var indexName="twitter"; var deleteIndexResponse = clie ...
- JavaScript引用是如何工作的
原文链接:https://www.sitepoint.com/how-javascript-references-work/ 摘要:JavaScript中没有指针,并且JavaScript中的引用与我 ...
- PHPexcel数据导出
使用PHPexcel数据导出,可以从网上下载phpexcel引入使用,下面是我做的简单的数据导出练习 一.下载phpexcel 二.引发这个导出(我这里是写了一个简单的点击事件) <div id ...
- AngularJs 4大核心
放弃了IE8, 4大核心: MVC: 数据模型,视图层,业务逻辑和控制模式(控制器), 为何MVC不是设计模式呢?(23种设计模式里没有MVC,MVC模式的目的就是实现Web系统的职能分工,超越了设计 ...
- 【转载】stm32定时器-----珍藏版
今天看到一个讲解定时器特别细致入微的文章,真是难得... 原文地址:http://www.cnblogs.com/zjvskn/p/5751591.html 一.STM32通用定时器原理 STM32 ...
- 探讨.NET Core数据加密和解密问题
前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用 ...