首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript --创建新数组而不是增量

Javascript --创建新数组而不是增量
EN

Stack Overflow用户
提问于 2016-01-23 17:37:03
回答 2查看 71关注 0票数 3

我正在制作一个简单的twitter应用程序来处理我的javascript。下面的代码应该标识每个tweet位置,并计算每个位置的tweet数量。

但是,它不增加,它只是创建一个新的数组。我的密码怎么了?我怎样才能让它变得更好?

谢谢

代码语言:javascript
复制
var Twitter = require('node-twitter'),
twit = {},
loc = [];

twit.count = 0;


var twitterStreamClient = new Twitter.StreamClient(
//credentials
);

twitterStreamClient.on('close', function () {
    console.log('Connection closed.');
});
twitterStreamClient.on('end', function () {
    console.log('End of Line.');
});
twitterStreamClient.on('error', function (error) {
    console.log('Error: ' + (error.code ? error.code + ' ' + error.message : error.message));
});
twitterStreamClient.on('tweet', function (tweet) {


    if (loc.indexOf(tweet.user.location) === -1) {
        loc.push({"location": tweet.user.location, "locCount": 1});
    } else {
        loc.loation.locCount = loc.loation.locCount + 1;
    }


    console.log(loc);

});

var search = twitterStreamClient.start(['snow']);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-23 17:48:44

您需要重写on tweet回调:

代码语言:javascript
复制
var index = loc.reduce(function(acc, current, curIndex) {
   return current.location == tweet.user.location ? curIndex : acc;
}, -1);

if (index === -1) {
    loc.push({"location": tweet.user.location, "locCount": 1});
} else {
    loc[index].locCount++;
}
票数 2
EN

Stack Overflow用户

发布于 2016-01-23 17:48:32

Array.indexOf并不像你想象的那样匹配。您正在创建一个新对象并将其推入数组中,无论它的属性是否完全匹配一个不同的对象,它都不会是===相等的。相反,您必须手动找到它:

代码语言:javascript
复制
var foundLoc;
for (var i = 0; i < loc.length; i++) {
  if (loc[i].location.x === location.x) 
     foundLoc = loc[i];
     break;
  }
}
if (!foundLoc) { 
  loc.push({location: location, count: 0});
} else {
  foundLoc.count++
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34966620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档