2015-05-04 5 views
0

Итак, я пытаюсь объединить два массива в один объект. Более конкретно, я создаю колоду карт с использованием JavaScript. Я создал два массива (показано ниже), и я ищу некоторую помощь о том, как их объединить, чтобы новый объект был отформатирован следующим образом: «heart», 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

Цикл - хорошее начало, можете ли вы показать нам, что вы пробовали? Кстати, это домашнее задание? Если это так, всегда полезно указать его как часть вашего текста, чтобы люди могли лучше вас вести. –

+0

У вас есть проблема с кодом цикла, который вы добавили? Вам нужен [многомерный массив] (http://stackoverflow.com/questions/7545641)? –

+0

Спасибо за помощь всем. Это была домашняя проблема. Мне удалось создать его сейчас. еще раз спасибо – Matt

ответ

1

Вам нужно будет перебрать массив значений с помощью цикла, а затем внутри каждой итерации также итерации по массиву в костюмах петля. Для работы nested loops вам понадобятся два разных индекса.

Массивы нулевые индексируются, поэтому индекс начинается с нуля и останавливается, когда индекс достигает length of the array.

Вот пример вложенного цикла, но вы должны использовать свойство, а не 13 и 4.

for(var i = 0; i < 13; i++) { 
    for(var j = 0; i < 4; i++) { 
    ... 
    } 
} 

Длина массива Внутри внутреннего цикла вы можете создать объект карты со значением из каждого массива, используя отдельные индексы и добавьте их в свой карточный массив, назначив его cards[cards.length] = { }, который добавляет новый элемент в конец массива.

Вы также можете выполнить то же самое, используя функциии Array.push() для замены операций цикла и присваивания.

0

Вы почти находитесь. Проблема заключается в коде внутри вашего цикла. Вы создаете массив, когда на самом деле хотите получить объект. Попробуйте это внутри цикла:

var newValue = values[a]; 
var newCard = {suit: newSuit, value: newValue}; 
cards.push(newCard); 

отметить также использование var newCard вместо newArray. var избегает добавления объекта в глобальную область.

Смежные вопросы