所以我遇到了一个未定义的数组元素的问题。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元素,这是您所使用的)