2017-07-05 24 views
-2

Ich versuche ein Objekt mit einer gegebenen Zeichenfolge zu erstellen, wobei jedes Wort eine Eigenschaft hat, die seine Länge angibt.JS Die Eigenschaft "length" von undefined kann nicht gelesen werden

var strings = {}; 

function findLongestWord(str) { 
    var splitStr = str.split(" "); 
    for (var i = 0; i <= str.length; i++){ 
    strings[splitStr[i]] = splitStr[i].length; 
    } 

    return strings; 
} 

findLongestWord("The quick brown fox jumped over the lazy dog"); 

ich am Ende immer:

"TypeError": Cannot read property "length" of undefined. 

Wenn ich splitStr ersetzen waren [i] .length mit splitStr [0] .length, wird der Code richtig, aber natürlich gibt mir die gleiche Nummer für jedes Wort im Objekt.

Jede Hilfe wird geschätzt, danke.

+1

Es sollte 'i Li357

+0

Es ist mir nicht klar, was Sie mit der Schleife machen. splitStr ist deine Wörterliste, aber du iterierst die ursprüngliche Zeichenkette? es gibt nicht annähernd so viele Wörter wie Zeichen in str. – n8wrl

Antwort

2

Sie Schleife über falsche Array. Sie sollten i < splitStr.length verwenden.

var strings = {};  
    function findLongestWord(str) { 
    var splitStr = str.split(" "); 
    for (var i = 0; i < splitStr.length; i++){ 
    strings[splitStr[i]] = splitStr[i].length; 
    } 

    return strings; 
} 
Verwandte Themen