Javascript 为数组中的变量分配新值的forEach循环并没有替换变量的值
我尝试使用forEach循环遍历包含三个变量的数组,并将每个变量的值更改为0-255之间的随机数 我首先给每个变量一个简单的值:Javascript 为数组中的变量分配新值的forEach循环并没有替换变量的值,javascript,arrays,Javascript,Arrays,我尝试使用forEach循环遍历包含三个变量的数组,并将每个变量的值更改为0-255之间的随机数 我首先给每个变量一个简单的值: let rgb1 = 1; let rgb2 = 2; let rgb3 = 3; 然后我将这些变量放入一个数组中: let rgbVariables = [rgb1,rgb2,rgb3]; 我有一个返回0-255之间的随机数的函数 function randomColor() { return Math.floor((Math.random() * 25
let rgb1 = 1;
let rgb2 = 2;
let rgb3 = 3;
然后我将这些变量放入一个数组中:
let rgbVariables = [rgb1,rgb2,rgb3];
我有一个返回0-255之间的随机数的函数
function randomColor() {
return Math.floor((Math.random() * 255));
}
最后是循环数组的函数
function refreshRGBNumbers() {
rgbVariables.forEach(function(rgb) {
rgb = randomColor();
});
单击按钮时调用refreshRGBNumbers函数。我已经验证了函数是否被正确调用,但是当我检查数组中变量的值时,它们仍然是1,2,3
要让函数正确地用随机数替换数组变量,我需要在这里做什么?如果要更改数组中的值,需要直接更改它
rgbVariables.forEach(function(val, index, array) { array[index] = randomColor(); })
forEach(函数(rgb){rgb=randomColor();})对数组不做任何操作,它不会改变值您不能改变基元值。执行
forEach((rgb,index,array)=>array[index]=randomColor())
或更好的。映射(()=>randomColor())
数组中的值是基元,forEach没有传递对数组元素的引用,它通过了原语value@epascarello当我用你的函数替换我的函数时,我有同样的问题。新函数:函数refreshRGBNumbers(){rgbVariables.forEach(函数(val,index,array){array[index]=randomColor();})console.log(rgb1);console.log(rgb2);console.log(rgb3);}
返回与以前相同的1,2,3,变量永远不会更新,这不是它的工作方式。当你将变量粘贴到数组中时,它并没有引用那个变量,而是当时的那个值。