所以我遇到了一个未定义的数组元素问题。 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");
答案 0 :(得分:1)
首先,为工作使用正确的工具: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元素,这就是你在小提琴中所拥有的。)