我有一个数字数组:
var array = [ 23, 67, 120, 170, 200, 212, 350 ];
我想将数组的每个元素缩小 20%。
我使用了 array.forEach(function(item) {item * 0.8;});
,但它什么也没做。我也尝试了 var scaledArray = array.forEach(function(item) {item * 0.8;});
,但结果未定义。
最佳答案
forEach
针对数组中的每个元素调用提供的函数;它不会返回具有修改值的新数组(来自对每个元素调用提供的函数)。您要使用的是 map
:
array = array.map(function(element) {
return element * 0.8;
});
这将根据您提供的映射函数映射数组的每个元素,并返回由这些映射值组成的新数组。
如果你想保留原始数组,你可以简单地将 map
的结果分配给一个不同的变量:
var scaledArray = array.map(function(element) {
return element * 0.8;
});
您可以使用 forEach
完成这两个操作,例如:
array.forEach(function(element, index, _array) {
_array[index] = element * 0.8;
});
和:
var scaledArray = [];
array.forEach(function(element, index) {
scaledArray[index] = element * 0.8;
});
但我相信您会同意 map
版本更加优雅和惯用。
关于javascript - 在 JavaScript 中使用 forEach 将数组的所有元素乘以数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29111002/