所以我试图将两个数组合并为一个对象。更具体地说,我正在使用JavaScript创建一副牌。我创建了两个数组(如下所示),我正在寻找一些关于如何合并它们的帮助,以便新对象的格式如下{suit:'hearts',value:'A'}。我相信我需要做一个for循环但是无法使它工作。有人有什么建议吗?
// ...尝试在这里合并两个数组......
function deck_o_cards() {
var values = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A'];
var suits = ['hearts', 'diamonds', 'clubs', 'spades'];
var cards = [ ];
for(i=0, i< suits.length, i++){
var newSuit = suits[i];
for(a=0; a< values.length, a++) {
var newValue= values[a];
newArray=[newSuit, newValue];
cards.push(newArray);
}
}
}
答案 0 :(得分:1)
您需要使用循环迭代values数组,然后在每次迭代内部迭代遍历数组中的suit数组。您需要两个不同的索引才能使nested loops正常工作。
数组为零索引,因此索引将从零开始,并在索引到达length of the array时停止。
以下是嵌套循环的示例,但您应该使用数组长度属性而不是13和4。
String firstLetter = Character.toString(s.charAt(0));//alternatively use s.substring(0,1)
int value = Integer.parseInt(firstLetter);
在内部循环中,您可以使用单独的索引使用每个数组中的值创建卡对象,并将其添加到卡阵列中,方法是将其分配给for(var i = 0; i < 13; i++) {
for(var j = 0; i < 4; i++) {
...
}
}
,这会在阵列末尾添加新项目
您还可以使用Array.map()和Array.push()函数完成相同的操作,以替换循环和赋值操作。
答案 1 :(得分:0)
你快到了。问题在于循环中的代码。当你真正想要一个对象时,你正在创建一个数组。在循环中尝试这个:
var newValue = values[a];
var newCard = {suit: newSuit, value: newValue};
cards.push(newCard);
另请注意使用var newCard
代替newArray
。 var
避免将对象添加到全局范围。