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;});,但结果未定义.
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版本更加优雅和惯用.