【问题标题】:Strange behavior of a forEach on an array NodeJS/Cron数组NodeJS / Cron上forEach的奇怪行为
【发布时间】: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 中有空项目的原因是什么? 谢谢。

【问题讨论】:

  • 很明显,如果您只有 12131111121 项,那么只有那些被设置在数组中。你还期望你的代码做什么?
  • 其实应该是这样的,但是如你所见,最后的console.log显示的是groups_to_check的最终内容,并且有多个空项。怎么设置第一个console.log的空项从不显示空内容?
  • 也许调用if实际上添加了空数据?
  • 你想在里面放什么而不是空的东西?或者您根本不想要任何空物品?
  • 您正在显式创建一个(某种)稀疏数组。当您不添加到阵列时,您不会记录任何内容。不确定是什么混乱。

标签: javascript arrays node.js string


【解决方案1】:

我通过将 groups_to_chek 从 [] 更改为 {} 找到了解决问题的方法。 感谢您的宝贵时间!

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多