【发布时间】:2019-03-02 08:55:08
【问题描述】:
我在使用 Redis 客户端 (NodeJS) 时遇到了数组 groups_to_check 的问题。
我创建了变量groups_to_check,只有当它不存在时才将数据推入其中。
这个数据来自data2,是data1.forEach的一项
data2 值示例:group:12:myGroupName:myChannelName:messages
cron.schedule('*/2 * * * * *', function() {
console.log('running every 2 seconds');
var groups_to_check = [];
client.keys('group:*', function (error, data1) {
data1.forEach(function(data2){
var temp_key_group = data2;
temp_key_group = temp_key_group.split(':');
if(typeof groups_to_check[temp_key_group[1]] === 'undefined'){
groups_to_check[temp_key_group[1]] = "_"+temp_key_group[1];
console.log("_"+temp_key_group[1]);
}
});
console.log( "____ "+ groups_to_check );
});
});
console.log 表明我的数组有空项目:
running every 2 seconds
_12
_13
_1
_11
_21
____ ,_1,,,,,,,,,,_11,_12,_13,,,,,,,,_21
最后一个 console.log 中有空项目的原因是什么? 谢谢。
【问题讨论】:
-
很明显,如果您只有
12、13、1、11和11和21项,那么只有那些被设置在数组中。你还期望你的代码做什么? -
其实应该是这样的,但是如你所见,最后的console.log显示的是groups_to_check的最终内容,并且有多个空项。怎么设置第一个console.log的空项从不显示空内容?
-
也许调用if实际上添加了空数据?
-
你想在里面放什么而不是空的东西?或者您根本不想要任何空物品?
-
您正在显式创建一个(某种)稀疏数组。当您不添加到阵列时,您不会记录任何内容。不确定是什么混乱。
标签: javascript arrays node.js string