迭代具有最大值限制的数组并返回

时间:2016-07-22 18:11:33

标签: javascript arrays

如何返回一个设置了最大值的数组,在这种情况下,它们是否大于5?

arr.forEach(function(index, theArray) {
   if (theArray[index] > 5) theArray[index] = 5
})
console.log(arr) // [5.5, 0.1 8.4, 4.3, etc] 

想要[5, 0.1, 5, 4.3, etc]

2 个答案:

答案 0 :(得分:3)

您可以使用mapMath.min

arr = arr.map(n => Math.min(n, 5));

答案 1 :(得分:1)

您需要添加一个参数来从forEach函数中获取当前元素。

<强>输入

var arr = [5.5, 0.1, 8.4, 4.3];

<强>代码

arr.forEach(function(_, index, theArray) {
   if (theArray[index] > 5) theArray[index] = 5;
})
console.log(arr)

<强>输出

  

[5,0.1,5,4.3]

参考文件:

  

<强>语法

arr.forEach(callback[, thisArg])
     

<强>参数

     
      
  • <强>回调

         

    为每个元素执行的函数,带有三个参数:

         
        
    • <强> CurrentValue的

           

      数组中正在处理的当前元素。

    •   
    • <强>索引

           

      数组中正在处理的当前元素的索引。

    •   
    • <强>阵列

           

      正在应用forEach()的数组。

    •   
  •   
  • <强> thisArg

         

    可选。执行回调时使用的值。

  •   
     

返回值

undefined

您的代码也可以缩短一点,利用这个未使用的变量。

arr.forEach(function(element, index, theArray) {
  if (element > 5) theArray[index] = 5;
}

请注意,如果您想在不改变原始数组的情况下执行此操作,您还可以选择map。

arr.map(function(e) { return Math.max(e, 5); }