js巧用apply方法实现数组最值以及合并
尽管js的apply方法在平常的使用中并不多见,但是在某些地方使用的还是很有帮助性的,这里就和大家说两个比较实用的例子:
1.数组最大最小值
求数组中的最大最小值,js有相应的方法:Math.min(),Math.max(),但是这两个方法有个不方便的地方就是其参数不能是数组,而是单个元素值,即(para1,para2,para3....)。所以使用就没有那么方便了,但是我们可以使用这个方法:
var min = Math.min.apply(null, arr);
var max = Math.max.apply(null, arr);
2.数组合并。数组的合并也和求最值一样,我们可以使用简单的push(para1);进行循环push.但我们也可以使用比较简单的方法:
Array.prototype.push.apply(arrA, arrB); //将数组arrB push到数组 arrA中。
这里要解释下能这么用的原因。从另外一个关于apply的文章,我们可以了解到,function的apply方法的第二个参数是一个数组集合, 在调用的时候,他需要的不是一个数组,但是为什么他给我一个数组我仍然可以将数组解析为一个一个的参数,这个就是apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) ,所以利用变个特性,我们就实现了上面的功能。
下面是我的完整代码,方便大家学习了解。
$('#getMinMax').click(function () {
       var arr = [1, 2, 3, 4, 5, 6, 7, 0.9, 11];
       var min = Math.min.apply(null, arr);
       var max = Math.max.apply(null, arr);
       alert('min:' min '  max:' max);
   });
   $('#unite').click(function () {
       var arrA = ['1', '2', '3'];
       var arrB = [4, 5, 6];
       Array.prototype.push.apply(arrA, arrB);
       var str = 'newArr:[';
       for (var i = 0; i < arrA.length; i  ) {
           str  = arrA[i]   ',';
       }
       str = str.substr(0, str.length - 1) ']';
       alert(str);
   });
js巧用apply方法实现数组最值以及合并的更多相关文章
- JS中split使用方法和数组中元素的删除
		JS中split使用方法和数组中元素的删除 JS中split使用方法 <script language="javascript"> function spli(){ d ... 
- js中call apply方法的使用介绍
		js call call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, ... 
- js  call 和 apply方法记录
		最近看到一篇很好的讲解apply和call的文章转了过来,若涉及版权问题请联系本人删除 1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用 ... 
- JS call和apply方法使用
		总是对call和apply方法使用存在迷惑,特此记录一下 一句话理解这两个方法: call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call ... 
- js中常用的方法(数组篇)
		1.replace(),根据释义,即为代替,用法为: stringObject.replace(regexp/substr,replacement)括号内前者是待匹配字符串,并用后者代替这个字符串.例 ... 
- js call与apply方法
		js中所有函数都默认定义了Call()与apply()两个方法,call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call与a ... 
- js中 call() 和 apply() 方法的区别和用法详解
		1.定义 每个函数都包含俩个非继承而来的方法:call() 和 apply() call 和 apply 可以用来重新定义函数的的执行环境,也就是 this 的指向:call 和 apply 都是 ... 
- angularJS之$watch、$digest和$apply方法
		最近项目上使用了比较多的angular JS,一直都对它感觉比较陌生,总觉得有点反直觉,这段时间,准备下定决心弄明白,这个框架到底是怎么一回事,以及它的工作原理,生命周期……一点一点的啃完它吧.首先, ... 
- JS中 call() 与apply 方法
		1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ... 
随机推荐
- 从零开始攻略PHP(7)——面向对象(上)
			1.理解面向对象的概念 面向对象软件的一个重要优点是支持和鼓励封装的能力.封装也叫数据隐藏. 在面向对象的软件中,对象是一个被保存数据和操作这些数据的操作方法的唯一.可标识的集合. 对象可以按类进行分 ... 
- linux rhel7 dock6.7安装
			1. 下载dock6.7 先申请license 在这个网址下载http://dock.compbio.ucsf.edu/Online_Licensing/index.htm 2. tar zxvf * ... 
- 用android去写一个小程序
			前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云 共用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对 ... 
- Leetcode: Longest Substring with At Most K Distinct Characters && Summary: Window做法两种思路总结
			Given a string, find the length of the longest substring T that contains at most k distinct characte ... 
- mpt_voronoi demo
			% %demo1% A=rand(3,10);% pbound=Polyhedron([0 0 0;150 0 0;150 150 0;0 150 0; 0 0 1;150 0 1;150 150 1 ... 
- android 图片压缩
			引用:http://104zz.iteye.com/blog/1694762 第一:我们先看下质量压缩方法: private Bitmap compressImage(Bitmap image) { ... 
- Xubuntu VNC Xfce4
			sudo mousepad ~/.vnc/xstartup #!/bin/sh # Uncomment the following two lines for normal desktop: unse ... 
- .net 事务处理的三种方法
			方法1:直接写入到sql 中 在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS 实现 begin trans declare@orderDetail ... 
- 接口测试第十二课(fidller过滤)(转)
			转自: 经常有人问我,如何只抓手机上某个应用的请求包?在使用fiddler抓手机包的过程中,fiddler会话框上瞬间就满屏了,因为它不仅抓到手机上的请求数据包,也抓到了PC端的网络请求包.这时候很难 ... 
- Eclipse快捷键
			http://www.blogjava.net/action/articles/17339.html http://blog.csdn.net/keenweiwei/article/details/3 ... 
