在javascript中,我将全局变量“sentimentValues”实例化如下:
var sentimentValues = [
{txt: "good", num: 0},
{txt: "bad", num: 0},
{txt: "neutral", num: 0}
];
我后来有一个函数,其中操纵全局变量“sentimentValues”。 该函数如下所示,其中data是从csv文件创建的数组,每个d是csv文件中的一个条目。
data.forEach(function(d){
var strArray = d.message.split(" ");
d.sentiment = calculateSentiment(strArray);
if(d.sentiment == "good")
sentimentValues[0].num += 1;
else if(d.sentiment == "bad")
sentimentValues[1].num += 1;
else
sentimentValues[2].num += 1;
})
“calculateSentiment”功能如下:
function calculateSentiment(wordArray)
{
var goodCount = 0;
var badCount = 0;
for(var i = 0; i<wordArray.length; i++)
{
for(var index = 0; index<happyWords.length; index++)
{
if(happyWords[index] == wordArray[i])
{
goodCount++;
}
}
for(var index = 0; index<sadWords.length; index++)
{
if(sadWords[index] ==wordArray[i])
badCount++;
}
}
if(goodCount > badCount)
return "good";
else if(badCount > goodCount)
{
return "bad";
}
else
return "neutral";
}
和happyWords,sadWords被定义为:
var sadWords;
var happyWords;
$.get('happyWords.txt',function(data){
happyWords = data.split('\n');
});
$.get('sadWords.txt',function(data){
sadWords = data.split('\n');
});
调用函数后,我将这两行称为:
console.log(sentimentValues);
console.log(sentimentValues[0]);
第一个日志语句正确反映了函数中所做的更改(即sentimentValues [0] .num为2)。第二个日志语句没有。
- 控制台中第一个语句的输出扩展为显示sentimentValues [0] .num为2
- 控制台中第二个语句的输出显示sentimentValues [0] .num为0 ...
可在此处查看控制台输出的屏幕截图:http://lmc.gatech.edu/~epramer3/consoleOutput
这里发生了什么?
答案 0 :(得分:0)
当然,如果您粘贴更多代码会有所帮助,但首先尝试更改变量名称“values”。
编辑: 我检查了你的代码和截图,甚至尝试了你的代码,输出按预期进行。 您似乎正在使用Google Chrome,您是否尝试过一些简单的步骤,例如重新启动浏览器或完全尝试其他浏览器?