尽管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
- Vue3+Vite+TS+Eslint搭建生产项目最终版配置
- 以太坊账户私钥管理之导出、导出keystore 文件
- 以太坊账户私钥管理keystore 文件是什么?
- vue+vite项目当中:介绍一种生成助记词新方法,兼容以太坊
- bip39:使用bip39生成助记词,在vue3不同的框架vite、vue-cli当中引入配置的方法
- 区块链以太坊keccak256生成公、私钥以及消息签名
- 区块链数字签名、验签,以及椭圆曲线算法JS库—elliptic的使用
- 区块链不同算法生成hash值的方法
- 【Vue3】vite配置css 的sourceMap ,以及文件引用配置别名
- js计算大额数据当中丢失精度以及消除科学计数法解决方案—decimal.js的使用