使用JavaScript中的forEach将数字的所有元素乘以数字

uru*_*hai 4 javascript arrays foreach

我有一系列数字:

var array = [ 23, 67, 120, 170, 200, 212, 350 ];
Run Code Online (Sandbox Code Playgroud)

我希望将每个元素的元素缩小20%.

我用过array.forEach(function(item) {item * 0.8;});,但没有做任何事.我也尝试过var scaledArray = array.forEach(function(item) {item * 0.8;});,但结果未定义.

Viv*_*ath 7

forEach为数组中的每个元素调用提供的函数; 它不会返回带有修改值的新数组(来自对每个元素调用提供的函数).你想要使用的是map:

array = array.map(function(element) {
    return element * 0.8;
});
Run Code Online (Sandbox Code Playgroud)

这将根据您提供的映射函数映射数组的每个元素,并返回由这些映射值组成的新数组.

如果要保留原始数组,可以简单地将结果分配给map另一个变量:

var scaledArray = array.map(function(element) {
    return element * 0.8;
});
Run Code Online (Sandbox Code Playgroud)

可以用以下两种方法做到这forEach两点:

array.forEach(function(element, index, _array) {
    _array[index] = element * 0.8;
});
Run Code Online (Sandbox Code Playgroud)

和:

var scaledArray = [];
array.forEach(function(element, index) {
    scaledArray[index] = element * 0.8;
});
Run Code Online (Sandbox Code Playgroud)

但我相信你会同意这个map版本更加优雅和惯用.

  • 请欣赏作者解释的不同之处不仅仅是提供解决方案.+1 (4认同)