将两个数组合并到一个对象中

时间:2015-05-04 23:38:47

标签: javascript arrays object

所以我试图将两个数组合并为一个对象。更具体地说,我正在使用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);
        }
    }
}

2 个答案:

答案 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代替newArrayvar避免将对象添加到全局范围。