2017-11-13 3 views
1

Ich habe eine Frage hier. Ich weiß, dass mein Code viele Probleme hat und ich brauche deine Hilfe. Das Problem besteht darin, ein Objekt zurückzugeben, das Wiederholungsinformationen der Zeichenfolge enthält. Die gegebene ZeichenfolgeWie verwendet man 'in' Schlüsselwort in Javascript

var r = countFreq(["a", "b", "b", "c", "c", "c", "d"]); 

und das Ergebnis haben

{"a":1, "b":2, "c":3, "d":1 } 

console.log von (R) sein;

Alles was ich weiß ist, Schlüssel (Eigenschaften) müssen Element sein und Wert (Wert der Eigenschaft) muss die Anzahl der Wiederholungen sein. UND, ich muss 'in' Schlüsselwelt verwenden, um dieses Problem zu lösen.

Like, 
if('property' in 'object') { 
//... 
}else { 
//... 
} 

(wenn es keine Eigenschaft als 1 zu initialisieren, und wenn es eine gleiche Eigenschaft ist, fügen Sie 1 jedes Mal)

Ich schätze Ihre Hilfe wirklich. (Dieser Beitrag kann Grammatikfehler hat das bedauert mich sehr, dass wirklich ....)

 function countFreq(array) { 
     var i; 
     for(i=0; i<array.length; i++) 
     { 
      if(array[i] in array) 
      { 
      return i += 1; 
      }else 
      { 
      return i = 1; 
      } 
      console.log(array[i]+": "+i+", "); 
     } 
     } 
     var r = countFreq(["a","b","c","c","c","d"]); 
     console.log(r); 
+0

Sie müssen hier weitere Informationen angeben. Was versuchst du zu erreichen? Wenn Sie die Häufigkeit jedes Buchstabens im Array zählen müssen, verwenden Sie dieselbe Variable "i" für Ihre Schleife und Ihr Ergebnis. Der 'in'-Operator wird verwendet, um zu prüfen, ob ein Index in einem Array vorhanden ist, um nicht zu prüfen, ob der Wert in dem Array vorhanden ist. –

+0

Entschuldigung! Ich habe die Frage vor ein paar Minuten bearbeitet. Ich dachte, ich muss ein Objekt erstellen, um die Häufigkeit jedes Buchstabens im Array und den folgenden Buchstaben zu speichern. Wie kann ich ein richtiges Objekt erstellen und wie kann ich es mit der Funktion countFreq() verwenden? @GerardWilkinson – WonGyeong

Antwort

1

Nach MDN - Der ‚in‘ Operator gibt true zurück, wenn die angegebene Eigenschaft in dem angegebenen Objekt oder deren Prototyp-Kette . Prop ist ein String oder Symbol, das einen Eigenschaftsnamen oder einen Array-Index darstellt (Nicht-Symbole werden zu Strings gezwungen). Objekt soll prüfen, ob es (oder seine Prototypkette) die Eigenschaft mit dem angegebenen Namen enthält.

Also in Ihrem Fall hängt es ab, was Ihr Objekt ist? Wenn Ihr Objekt ein Array ist, müssen Sie prop als Eigenschaften des Arrays verwenden. Alle Indexwerte bis zur Länge des Arrays geben true zurück. MDN Beispiel für Arrays

var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple']; 
0 in trees  // returns true 
3 in trees  // returns true 
6 in trees  // returns false 
'bay' in trees // returns false (you must specify the 
        // index number, not the value at that index) 
'length' in trees // returns true (length is an Array property) 
Symbol.iterator in trees // returns true (arrays are iterable, works only in ES2015+) 
+0

Vielen Dank für Ihr freundliches Beispiel. Es hat mir sehr geholfen. Ich werde weiter lernen! – WonGyeong

0

Ich glaube, Sie sind Missverständnis der in Betreiber. In kann in 2 Fällen als boolescher Operator verwendet werden, um nach dem Vorhandensein eines Indexes in einem Array zu suchen oder um über die Indizes eines Arrays mit einer for-Schleife zu iterieren. Sie verwenden es, um direkt auf das Vorhandensein eines Werts in einem Array zu prüfen, was nicht möglich ist. Auch von der Funktion, die Sie nach jeder Iteration zurückkehren, so dass Sie immer nur 1 bekommen oder 0

Ich nehme an, Sie so etwas wie die wollen folgende:

countFreq(array) { 
    var results = { a: 0, b: 0, c: 0, d: 0 }; 
    for (var index in array) { 
     results[array[index]] ++; 
    } 
    return results; 
} 

Jetzt können Sie jedes Ergebnis mit results[‘a’] zum Beispiel Zugang , nach dem Anruf countFreq. Ich denke, dass Sie auf return nachlesen müssen und Schleifen in JavaScript.

+0

Vielen Dank! Jetzt glaube ich, dass ich 'in' Operator verstanden habe. Ich werde versuchen, dieses Problem zu lösen, und mehr über 'Rückkehr und Schleife' lernen. – WonGyeong

+0

@WonGyeong Kein Problem.Können Sie eine Antwort markieren, wenn Sie einen Moment haben? Prost –

Verwandte Themen