我正在尝试使用++
运算符增加变量,但我不断得到NaN
,我不知道为什么。这是我的代码:
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());
答案 0 :(得分:10)
wordCounts["_" + words[i]]
的值最初是undefined
所以当你使用它时,它会给你NaN。只需将您的代码更改为:
if (wordCounts["_" + words[i]]) {
wordCounts["_" + words[i]]++;
} else {
wordCounts["_" + words[i]] = 1;
}
答案 1 :(得分:2)
尝试类似......
var key = "_" + words[i];
if (wordCounts[key]) {
wordCounts[key]++
} else {
wordCounts[key] = 1;
}
您正在尝试增加undefined
NaN
。{/ 1}。
答案 2 :(得分:1)
为了能够使用++
运算符(它取一个数字并将其递增1),目标需要首先得到一个数字。
尝试检查对象是否已定义,如果未通过将其值设置为1来初始化对象。
if ('undefined' === typeof wordCounts["_" + words[i]]) {
wordCounts["_" + words[i]] = 0;
}
类似的东西:
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 ) );
答案 3 :(得分:1)
你基本上做的是
undefined++
这将导致......
NaN
...试
wordCounts["_" + words[i]] = (wordCounts["_" + words[i]]++ || 1);
由于NaN
是&#34; falsey&#34;重视||将回落到1。
答案 4 :(得分:0)
你正试图增加一个对象(wordCounts [] ++)它不是一个数字所以它不能递增,这就是你得到那个错误的原因。你究竟想做什么(用简单的英语)?