如何使用javascript foreach循环获取返回四?

时间:2019-02-11 04:52:07

标签: javascript arrays

有一个数组,我想使用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

6 个答案:

答案 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不返回任何值。

您可以使用 Filter Math.max

  1. 使用过滤器删除所有非数字值。
  2. 使用Math.max获得最高价值。

 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);