2016-12-29 10 views
0

Rückkehr Ich habe diese Funktion:ein Array von Objekten

buildDeck =() => { 
    let suit = ['C', 'D', 'H', 'S']; 
    let rank = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]; 
    let deck = []; 
    for (var i=0; i < rank.length; i++){ 
     for (var k=0; k < suit.length; k++){ 
     deck.push(rank[i] + suit[k]) 
     } 
    }; 
    return deck; 
    } 

dies gibt mir ein Array wie ['2C', '4D', etc] ich es mir ein Array von Objekten möchte so innerhalb jedem ist: Anzug: ‚C ', Rang: 4 zum Beispiel Wie kann ich ein Array von Strings in ein Array von Objekten konvertieren, wobei der Rang und die Farbe eine Eigenschaft in jedem Objekt sind?

+3

'deck.push ({Anzug: Anzug [k], Rang: rank [i]})' – haim770

+2

* "Wie kann ich ein Array von Strings in ein Array von Objekten umwandeln ... "Nicht. Erstellen Sie das Array von Objekten an erster Stelle. –

Antwort

2

Versuchen Sie, diese

buildDeck =() => { 
    let suit = ['C', 'D', 'H', 'S']; 
    let rank = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]; 
    let deck = []; 
    for (var i=0; i < rank.length; i++){ 
     for (var k=0; k < suit.length; k++){ 
     deck.push({ rank: rank[i], suit: suit[k]}) 
     } 
    }; 
    return deck; 
} 
0

Sie können mit den Pfeilfunktionen sowie für die Reihen und Anzüge verwenden.

var buildDeck = deck => 
 
     [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14].forEach(rank => 
 
      ['C', 'D', 'H', 'S'].forEach(suit => 
 
       deck.push({rank, suit}))), 
 
    deck = []; 
 

 
buildDeck(deck) 
 
console.log(deck);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Oder verwenden Sie einen Generator

function* buildDeck() { 
 
    for (let rank of [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]) { 
 
     for (let suit of ['C', 'D', 'H', 'S']) { 
 
      yield {rank, suit}; 
 
     }; 
 
    }; 
 
} 
 

 
var deck = [...buildDeck()]; 
 
console.log(deck);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

Total unlesbarer Code, mein Lieber. Ich denke, er suchte nach einer schnellen, einfachen Lösung. –

+1

Sieht nach einer interessanten Lösung aus. Es scheint etwas wie eine "clevere" Lösung und wäre wahrscheinlich schwierig zu lesen für jeden, der fragen muss, wie man das überhaupt macht, aber wenn man es anschaut, ist es eigentlich ziemlich cool. –

0

Run zwei verschachtelte Karten über Anzügen und Reihen, eine verschachtelte Anordnung der kleinen Anzug/Rang Objekte bauen , dann flachdrücken mit concat(....

const buildDeck =() => { 
 
    let suits = ['C', 'D', 'H', 'S']; 
 
    let ranks = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]; 
 

 
    return [].concat(...suits.map(suit => ranks.map(rank =>({suit, rank})))); 
 
} 
 

 
console.log(buildDeck());

+1

nette Idee mit concat, um die Arrays zu glätten. –

Verwandte Themen