JS求Number类型数组中最大元素方法
前端之家收集整理的这篇文章主要介绍了
JS求Number类型数组中最大元素方法,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_5020@如何使用JS,在一个Number类型的数组里,查找最大(或最小)数呢?
@H
502_0@以下介绍四个
方法。
@H_
502_0@
1. 不使用任何库函数
@H_
502_0@
代码如下:
<div class="jb51code">
<pre class="brush:js;">
function findMax1 (arr) {
let result = 0;
if (Array.isArray(arr)) {
for (let i = 0; i < arr.length; i++) {
result = arr[i] > result ? arr[i] : result;
}
return result;
} else {
console.error('The parameter arr is not an array');
return;
}
}
@H_
502_0@解释:
@H_
502_0@利用一个变量result来存储最大值。遍历待查找的数组,如果当前遍历的元素大于result,就把这个元素赋值给result。
@H_
502_0@
2. 利用Array.reduce()
@H_
502_0@
代码如下:
{
return a > b ? a : b;
},0);
return result;
} else {
console.error('The parameter arr is not an array');
return;
}
}
@H_
502_0@解释:
@H_
502_0@reduce
方法就是通过一个
函数,针对一个累加器(accumulator)和数组中的每一个元素,将一个数组最终减少到一个值。
@H_
502_0@reduce接受两个参数:
@H_
502_0@第一个是callback,就是那个前面提到的那个
函数。它有四个参数:
- accumulator:累加器,它是上次运行callback的结果。如果提供了initialValue,那么第一次就是initialValue;
- currentValue:当前遍历的数组的元素;
- currentIndex:当前遍历的数组的元素的index,从0开始。如果提供了initialValue,那就从1开始;
- array:当前应用reduce的数组。
@H_
502_0@第二个是initialValue,是一个初值,作为第一次运行callback
函数的第一个实参。这个是可选的。这里要注意一下,如果这个参数不提供,并且应用在一个空数组上,是会报错的。
@H_
502_0@那么上面
代码的意思就是,每次遍历数组进行比较,大的就留下来,即accumulator,并将其用作下一次和数组元素的比较。最后只留下这一个值,即最大值。
@H_
502_0@
3. 利用Apply和Math.max()
@H_
502_0@
代码如下:
return result;
} else {
console.error('The parameter arr is not an array');
return;
}
}
@H_
502_0@解释:
@H_
502_0@apply解释稍显复杂,不作进一步的解释。
@H_
502_0@它接受两个参数,第一个是thisArg,第二个是argsArray。两个都是可选的。此处简单来说,就是使用一个
函数时,参数以数组的方式传递进去。
@H_
502_0@
4. 只用Math.max()
@H_
502_0@
代码如下:
return result;
} else {
console.error('The parameter arr is not an array');
return;
}
}
@H_
502_0@解释:
@H_
502_0@基于上一个解法的思路,在ES6中,有一个扩展运算符(...),可以将一个数组中的元素拆出来,组成一个用逗号分隔的序列。刚好满足Math.max()
函数的需求。
@H_
502_0@在给大家介绍一下JS之number、Math和数组的相关知识点
@H_
502_0@1、Number对象。
@H_
502_0@创建Number对象的方式:
@H_
502_0@方式1:
@H_
502_0@var 变量= new Number(数字)
@H_
502_0@方式2:
@H_
502_0@var 变量 = 数字;
@H_
502_0@常用的
方法:
@H_
502_0@toString() 把数字转换成指定进制形式的字符串。(输入数字几,就转换为几, number.toString(2))
@H_
502_0@toFixed() 指定保留小数位,而且还带四舍五入的
功能。
@H_
502_0@2、Math
@H_
502_0@Math对象常用的
方法:
@H_
502_0@ceil 向上取整
@H_
502_0@floor() 向下取整
@H_
502_0@random()
随机数
方法 // 产生的伪
随机数介于 0 和 1 之间(含 0,不含 1),
@H_
502_0@round 四舍五入
@H_
502_0@3、Array数组对象:
@H_
502_0@创建数组的方式1:
@H_
502_0@var 变量名 = new Array(); 创建一个长度为0的数组。
@H_
502_0@方式2:
@H_
502_0@var 变量名= new Array(长度) 创建一个指定长度的数组对象。
@H_
502_0@方式3:
@H_
502_0@var 变量名 = new Array("元素1","元素2"...); 给数组指定元素创建数组 的对象。
@H_
502_0@方式4:
@H_
502_0@var 变量名 = ["元素1","元素2"...];
@H_
502_0@数组要注意的细节:
@H_
502_0@1. 在javascript中数组的长度是可以发生变化的。
");
var arr2 = new Array("狗娃","狗剩","铁蛋");
arr2 = ["狗娃","铁蛋","张三"];
document.write("arr2长度:"+arr2.length+"
");