如何返回一个设置了最大值的数组,在这种情况下,它们是否大于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]
答案 0 :(得分:3)
您可以使用map
和Math.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); }