Question

Je suis en train d'incrémenter une variable en utilisant l'opérateur ++ mais je continue à obtenir NaN en conséquence et je ne sais pas pourquoi. Voici mon code:

var wordCounts = { };
var x = 0
var compare = "groove is in the heart";
        var words = compare.split(/\b/);
        for(var i = 1; i < words.length; i++){
            if(words[i].length > 2){
                wordCounts["_" + words[i]]++;
            }
        }


alert(wordCounts.toSource());
Était-ce utile?

La solution

La valeur de wordCounts["_" + words[i]] est d'abord undefined donc quand vous ++, il vous donne NaN. Il suffit de changer votre code:

if (wordCounts["_" + words[i]]) {
    wordCounts["_" + words[i]]++;
} else {
    wordCounts["_" + words[i]] = 1;
}

Autres conseils

Essayez quelque chose comme ...

var key = "_" + words[i];

if (wordCounts[key]) {
    wordCounts[key]++
} else {
    wordCounts[key] = 1;
}

Vous essayez de undefined incrément qui vous donne NaN.

Pour pouvoir utiliser l'opérateur ++ (qui prend un nombre et incrémente par un) les besoins cibles d'avoir un premier numéro.

Tentative de vérification pour voir si l'objet est défini, sinon l'initialiser en réglant la valeur de 1 à.

if ('undefined' === typeof wordCounts["_" + words[i]]) {
            wordCounts["_" + words[i]] = 0;
}

Quelque chose comme:

var wordCounts = {};
var x = 0
var compare = "groove is in the heart";
var words = compare.split(/\b/);
for (var i = 1; i < words.length; i++) {
    if ('undefined' === typeof wordCounts["_" + words[i]]) {
        wordCounts["_" + words[i]] = 0;
    }
    if (words[i].length > 2) {
        wordCounts["_" + words[i]]++;
    }
}
alert( JSON.stringify( wordCounts ) );

Ce que vous faites est essentiellement

undefined++

Ce qui se traduira par ...

NaN

Essayez ...

wordCounts["_" + words[i]] = (wordCounts["_" + words[i]]++ || 1);

Depuis NaN est une valeur "Falsey" le || retombera à 1.

Vous essayez d'incrémenter un objet (wordcounts [] ++) ce n'est pas un nombre ne peut donc pas être augmenté, ce qui est la raison pour laquelle vous obtenez cette erreur. Qu'est-ce que vous essayez de faire réellement (en anglais ordinaire)?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top