1

这是代码的样子:

var figury = new Array("kwadrat", "kolo", "trojkat_rownoboczny", "trojkat_prostokatny", "heksagon", "trapez");
var kolory = new Array("blue", "green", "red", "yellow");

var losowanie_figur = function(wylosowane_figury) {
    for(var i = 0; i <= 3; i++)
        wylosowane[i] = { figura: figury[losowe[i]] };
}
var losowanie_kolorow = function(wylosowane_kolory) {
    for(var i = 0; i <= 3; i++)
        wylosowane[i] = { kolor: kolory[losowe[i]] };
}

我想做的是用颜色值更新数组,但我得到的是以前的值被覆盖了。我正在使用随机 f

这就是我得到的:

{ '0': { kolor: 'red' },
  '1': { kolor: 'green' },
  '2': { kolor: 'yellow' },
  '3': { kolor: 'blue' } }

而我真正想要的是:

{ '0': { figura: 'kwadrat', kolor: 'green' },
  '1': { figura: 'heksagon', kolor: 'red' },
  '2': { figura: 'trapez', kolor: 'blue' },
  '3': { figura: 'trojkat_prostokatny', kolor: 'yellow' } }
4

2 回答 2

1

你可以这样做:

var losowanie_kolorow = function(wylosowane_kolory){
for(var i=0;i<=3;i++)
    wylosowane[i].kolor =kolory[losowe[i];
}

您需要设置对象的属性,而不是将整个数组值设置为新对象。

顺便说一句,您从未wylosowane在此代码中进行设置,我假设已将其简化为简化?您也永远不会使用函数的参数。既然是这样,最好根本没有参数。

此外,通常认为将数组声明为的最佳实践

var kolory = ["blue", "green", "red", "yellow"];

而不是

var kolory = new Array("blue", "green", "red", "yellow");

大多数人认为它更具可读性,并且它避免了一些奇怪的边缘情况(new Array(3)例如,创建一个长度为 3 的空数组,而不是一个长度为 1 且索引为 0 处为 3 的数组)

于 2013-06-11T02:45:14.757 回答
0

您可以使用下划线 JS 来实现类似的效果:http: //underscorejs.org/#zip

var figury = new Array("kwadrat", "kolo", "trojkat_rownoboczny", "trojkat_prostokatny", "heksagon", "trapez");
var kolory = new Array("blue", "green", "red", "yellow");
var combined = _.zip(figury, kolory);

希望这可以帮助

于 2013-06-11T02:49:20.483 回答