有一个数组,我想使用foreach循环获取最大数量
这是一个数组
const array2 = ['a', 3, 4, 2]
我在JS中尝试的方式:
function biggestNumberInArray3(arr) {
var largest = arr[0] || null;
var number = null;
arr.forEach (value => {
number = value
largest = Math.max(largest, number);
})
return largest;
}
看起来Math.max在这里不起作用。
它返回NaN
还有其他方法可以使用foreach循环比较数组中的元素吗?
P.S .:此foreach循环将返回4
答案 0 :(得分:1)
您应该使用Array.reduce
来找到最大数,并在最大运算之前使用filter
来找到最大数,因为a
的存在将导致结果为NaN
。 / p>
const array2 = ['a', 3, 4, 2]
var max = array2.filter((num)=> !isNaN(num)).reduce((a, b)=>{
return Math.max(a, b);
});
console.log(max);
答案 1 :(得分:1)
forEach不返回任何值。
const array2 = ['a', 3, 4, 2]
console.log(Math.max(...array2.filter(e=> !isNaN(e))))
答案 2 :(得分:1)
const array2 = ['a', 3, 4, 2]
var max = Math.max(...array2.filter(num => Number.isInteger(num)));
console.log(max);
答案 3 :(得分:0)
从数组中删除字符串,请参见演示。对高效简单的代码不感兴趣? forEach()
仅返回undefined
,因此您需要获得副作用才能获得任何结果。在下面的演示中,循环外有一个变量,随着循环的进行而变化。最终,此变量将是数组中的最大数字。
/*
Math.max.apply()
======================================*/
const array = ['a', 3, 4, 2];
//Get rid of the string
const num = array.shift();
console.log(`Math.max.apply({}, arr) ========= ${Math.max.apply({}, array)}`);
/*
forEach()
=======================================*/
let max = 0;
array.forEach(num => {
max = num > max ? max = num : max;
});
console.log(`array.forEach() ================ ${max}`);
答案 4 :(得分:0)
如果要使用forEach,只需在代码中添加数字支票即可
function biggestNumberInArray3(arr) {
var largest = null;
var number = null;
arr.forEach (value => {
if(typeof(value) === "number"){
number = value
largest = Math.max(largest, number);
}
})
return largest;
}
console.log(biggestNumberInArray3(['a', 3, 4, 2]))
答案 5 :(得分:0)
这里您仅使用reduce()
有另一种解决方案:
const array2 = ['a', 3, 4, 2, "hello", {hello:"world"}];
let res = array2.reduce((max, e) => isNaN(e) ? max : Math.max(max, e), null);
console.log(res);