2016-04-20 10 views
0

Ich bin nur herumalbern mit zufälligen menschlichen Namen in JS generieren. Ich wollte auch das Modulmuster üben, aber ich kann meine Funktion nicht bekommen, ein normales Array zurückzugeben.JavaScript Modul Muster gibt unerwartete Ergebnisse

Was ich speichern möchte ist, wie oft ein Buchstabe (oder eine Reihe von Buchstaben) nach einem anderen Buchstaben angezeigt wird.

Also mit 'jacob' und 'jarod' soll ich sehe, dass die Buchstaben 'a' kamen nach dem Buchstaben 'J' 2 mal so: arr [j] [a] // 2

aber was Ich habe stattdessen irgendwie das Array in eine Reihe von Eigenschaften verwandelt und um herauszufinden, dass 'a' zweimal auftaucht, muss ich es auf diese Art überprüfen: myArray.ja // 2

kann jemand erklären, warum das so ist und wie Ich kann es reparieren?

var names = ['jacob', 'cameron', 'zach', 'lake', 'zander', 'casey', 'carl', 'jeff', 'jack', 'jarod', 'max', 'cat', 'mallory', 'dana', 'hannah', 'stu', 'abrham', 'isaac']; 

var probabilities = (function(){ 
    var nextLetterProbability = []; 

    function addProbability(index, letters){ 
     if(nextLetterProbability[index] !== undefined){ 
      if(nextLetterProbability[index][letters] !== undefined){ 
       nextLetterProbability[index][letters] = nextLetterProbability[index][letters] + 1; 
      } 
      else 
       nextLetterProbability[index][letters] = 1; 
     } 
     else{ 
      nextLetterProbability[index] = []; 
      nextLetterProbability[index][letters] = 1; 
     } 
    } 

    return { 
     learn:function(names, chainLength){ 
      for (var i = 0; i < names.length; i++) { 
       var name = names[i]; 
       for (var j = 0; j < name.length - chainLength; j++) { 
        var start = name[j]; 
        var next = name.slice(j + 1, j + chainLength + 1) 
        addProbability(start, next); 
       }; 
      }; 
     }, 
     getLearnedArray:function(){ 
      return nextLetterProbability; 
     } 
    } 

})(); 

Antwort

0

var nextLetterProbability = []; benötigt werden var nextLetterProbability = {}; weil es ein assoziatives Array ist und als ein Objekt behandelt wird.

Verwandte Themen