未定义的数组计数词:object



所以我遇到了一个未定义的数组元素的问题。1)不能得到我的未定义数组的工作2)我希望它以单词出现的次数输出数组

var wordCount =[];
splitAT.sort();
alert(splitAT);
for (var i = 0; i < splitAT.length; i++)
{
    if(splitAT[i] in wordCount)
{
wordCount.push(1);
}
else
{
wordCount[splitAT[i]] = 1;
}

document.write('[' + splitAT[i] + '][' + wordCount[i] + ']<br>') 
alert("your next wordcount is");
alert(wordCount); // this is just so i know where i am in the program.
alert("END");

首先,使用正确的工具:wordCount应该是一个对象,而不是一个数组:

var wordCount = {};  // note, curly brackets

…因为您计划使用字符串作为键来访问它,而不是使用数字数组索引。(是的,数组可以用于此目的,但这不是数组的预期目的。)

然后在你的循环中,如果当前单词已经在wordCount中,你想在现有值上加1,而不是使用.push(1),它将在数字索引元素的末尾插入一个新的数组元素。

// WRONG:
wordCount.push(1);           // inserts a new element
// RIGHT:
wordCount[splitAT[i]]++;     // increments the current value

把这些放在一起,你会像这样计算单词:

var wordCount = {};
splitAT.sort();
for (var i = 0; i < splitAT.length; i++) {
    if(splitAT[i] in wordCount) {
        wordCount[splitAT[i]]++;
    } else {
        wordCount[splitAT[i]] = 1;
    }
}

"我希望它输出数组作为单词的出现次数。"

要输出结果,可以这样做:

var output = [];
for (var k in wordCount)
    output.push("'" + k + "' appears " + wordCount[k] + " time(s).");
document.getElementById("NumCount").value = output.join("n");

(假设您想要用id="NumCount"输出到textarea元素,这是您所使用的)

相关内容

  • 没有找到相关文章

最新更新