nodejs合并数组
Posted
技术标签:
【中文标题】nodejs合并数组【英文标题】:nodejs merge array 【发布时间】:2012-09-01 15:03:40 【问题描述】:我正在做一些 nodejs 摆弄来自 wordpress 的博客帖子和这些帖子的地理标记。我已将 geolite 集成到 nodejs 中,并从 wordpress 中获取客户端 ID。这是我的 nodejs 代码现在的样子。
native.on('data',
function(data)
//console.log(data)
listener.sockets.emit('notification', data);
jsonstring = JSON.parse(data)
var ip = jsonstring.clientip
var geo = geoip.lookup(ip);
console.log(ip);
console.log(geo);
listener.sockets.emit('geodata', geo);
);
如您所见,lat / long 与 json 编码数据分开发送到套接字。
我想将 lat / long 合并到“数据”中并作为 1 个对象发送。我不知道该怎么做。我希望有人可以帮助我解决这个问题。
【问题讨论】:
【参考方案1】:一个或两个 expando/ad-hoc 属性就足够了:
listener.sockets.emit('notification', data);
jsonstring = JSON.parse(data)
var ip = jsonstring.clientip
var geo = geoip.lookup(ip);
jsonstring.geo = geo;
// or
jsonstring.lat = geo.lat;
jsonstring.lng = geo.lng;
【讨论】:
这似乎可行,但我需要将“jsonstring”再次编码为 json,然后再将其发送到套接字。将数据添加到数组后如何进行json编码? 我最终得到了这个可行的解决方案。感谢您的帮助 :-) native.on('data', function(data) jsonstring = JSON.parse(data) var ip = jsonstring .clientip var geo = geoip.lookup(ip); jsonstring.lat = geo.ll[0]; jsonstring.lng = geo.ll[1]; jsondata = JSON.stringify(jsonstring); listener.sockets.emit('通知',jsondata);console.log(jsondata);); native.on('end', function() ); 【参考方案2】:在发出之前将geo
信息添加为已解析数据对象的另一个属性:
native.on('data',
function(data)
var obj = JSON.parse(data)
obj.geo = geoip.lookup(obj.ip);
listener.sockets.emit('notification', JSON.stringify(obj));
);
【讨论】:
【参考方案3】:你也可以使用
listener.sockets.emit('notification', data);
jsonstring = JSON.parse(data)
var ip = jsonstring.clientip
var geo = geoip.lookup(ip);
jsonstring['geo'] = geo;
在jsonstring中追加数据
当我们有动态键值时,[ ] 会更有帮助
【讨论】:
以上是关于nodejs合并数组的主要内容,如果未能解决你的问题,请参考以下文章