本文主要介绍了apply()在JS中的应用,并结合实例分析了使用apply()操作数组的相关技巧。有需要的可以参考一下。
本文介绍了apply()在JS中的应用。分享给你,供你参考,如下:
让我们从Math.max()函数开始。Math.max之后可以接收任何参数,最后返回所有参数的最大值。
例如:
alert(Math.max(5,8));//8
alert(Math.max(5,7,3,1,9,2));//9
但在很多情况下,我们需要找到数组中最大的元素。
例如:
/*
*找出数组中最大的数字
*/
var arr=[1,4,9,6];
//alert(math . max(arr));//NaN,这种用法不正确。
函数最大值(arr){
var arrLen=arr.length
var max value=arr[0];
for(var I=0;iarrLeni ){
var maxValue=Math.max(maxValue,arr[I]);
}
返回maxValue
}
alert(max(arr));//9
上面写的很麻烦,效率很低。让我们用apply()试试。
/*
*用apply()找到数组中的最大数字
*/
var arr=[1,4,9,6];
函数getMax1(arr){
return Math.max.apply(Math,arr);//第一个参数也可以用this或null填充
}
alert(get max 1(arr));//9
这两段代码达到了相同的效果,但是getMax1()是优雅、简洁和高效的。
比如数组的push方法。
/*
*将两个数组合并成一个数组。
*/
var arr1=[1,3,4];
var arr2=[6,7,8];
arr 1 . push(arr 2);这样不行。你得到的是[1,3,4,[6,7,8]]。因为push方法不提供push的数组,但是提供push(param1,param2…)
可以将arr2展开,然后一个一个的推送到arr1中(当然也可以使用arr1.concat(arr2),但是concat方法并不改变arr1本身)。
var arr len=arr 2 . length;
for(var I=0;iarrLeni ){
arr 1 . push(arr 2[I]);
}
但是通过apply(),事情变得非常简单。
array . prototype . push . apply(arr 1,arr 2);
console . log(arr 1);//1,3,4,6,7,8
原理:arr1调用push方法,参数是应用数汇编的一组参数表。
看到这里,你心里是不是在想:有必要这么麻烦吗?(恶心的表情)js明明有强大的方法concat,concat()方法是用来连接两个或多个数组的。此方法不会更改现有数组,而只会返回所连接数组的副本。如下
var arr1=新数组(' 1 ',' 3 ',' 4 ');
var arr2=新数组(' 6 ',' 7 ',' 8 ');
console . log(arr 1 . concat(arr 2));//1,3,4,6,7,8
console . log(arr 1);//1,3,4
console . log(arr 2);//6,7,8
其实我想说,如果真的需要数组链接,当然要用concat。使用apply只是介绍如何使用,而不仅仅是如何使用。
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun来测试上述代码的运行效果。
更多JavaScript相关内容请参考我们的专题:《JavaScript数组操作技巧总结》、《JavaScript字符与字符串操作技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript查找算法技巧总结》和《JavaScript错误与调试技巧总结》。
希望这篇文章对大家的JavaScript编程有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。