Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带引用的Javascript多循环_Javascript - Fatal编程技术网

带引用的Javascript多循环

带引用的Javascript多循环,javascript,Javascript,我有一个对象,对于每个元素,我可以生成一个随机数。我使用以下简单代码: var ss = []; var a = [{ i: 5, _r: 0 }, { i: 6, _r: 0 }, { i: 7, _r: 0 }]; var b = function (a) { for (var i = 0; i < a.length; i++) { a[i]._r = Math.random(); } return a; }; for (j = 0; j < 5; j++) { ss.push(

我有一个对象,对于每个元素,我可以生成一个随机数。我使用以下简单代码:

var ss = [];
var a = [{ i: 5, _r: 0 }, { i: 6, _r: 0 }, { i: 7, _r: 0 }];
var b = function (a) { for (var i = 0; i < a.length; i++) { a[i]._r = Math.random(); } return a; };
for (j = 0; j < 5; j++) { ss.push(b(a)); };
console.log(ss);
var ss=[];
var a=[{i:5,{r:0},{i:6,{r:0},{i:7,{r:0}];
var b=函数(a){for(var i=0;i
在日志数组之后,我为每个数组获取相同的对象。分别。ss[0][0]。\r=ss[1][0]。\r=ss[2][0]。\r。但关键是数学。随机,这是不对的。我希望每个键中都有一个随机数


要搜索解决方案,必须使用函数b!感谢

JavaScript通过引用传递参数,因此每当您将数组传递给函数时,都会传递相同的实例并将其添加到结果数组中。因此它们都是一样的

一个简单的解决方案是在b中构建一个新数组并返回该数组

var ss = [];
var a = [{ i: 5, _r: 0 }, { i: 6, _r: 0 }, { i: 7, _r: 0 }];
var b = function (x) { 
    var result = [];
    for (var j = 0; j < x.length; j++) {
        result.push({ i : x[j].i, _r : Math.random()} );
    }
    return result; 
};
for (j = 0; j < 5; j++) { ss.push(b(a)); };
console.log(ss);
var ss=[];
var a=[{i:5,{r:0},{i:6,{r:0},{i:7,{r:0}];
var b=函数(x){
var结果=[];
对于(var j=0;j

我不太确定另一个属性的用途,但您也可以传递一些输入数组并将其用于计算。重要的一点是创建一个新数组。

您只需反复覆盖相同的
a
属性即可。沿着这条路的某个地方复制它。这个问题完全是重复的。请不要这样做,你的问题,而不是删除和重新发布。你有没有请编辑的样本?现在我心烦意乱。感谢不是真的;它们是通过值传递的(但您可以修改对对象的引用)。抱歉,此解决方案示例不是功能性的。我很抱歉,它是在我的单元格中键入的。现在应该可以了。您可以编写一个函数,首先创建输入对象的深度副本,然后分配随机值。