【问题标题】:Javascript looping only through defined properties of array. How?Javascript 仅通过数组的已定义属性循环。如何?
【发布时间】:2010-06-12 13:47:17
【问题描述】:

例如,如果我像这样通过 id 保存引用数组:

if(typeof channel_boards[misc.channel_id] == 'undefined') {

    channel_boards[misc.channel_id] = $('<div class="channel" channel_id="'+misc.channel_id+'"></div>').appendTo('#board');
}

然后我循环遍历数组以找到所需的参考。我也在循环未定义的属性。是否可以只循环定义的属性?

for(i=0;i<channel_boards.length;i++)
{
    if(channel_boards[i] != undefined)
    {
        if(channel_boards[i].attr('channel_id') != visible) {channel_boards[i].addClass('hidden_board');}
        else {channel_boards[i].removeClass('hidden_board');}       
    }
}

也许我应该改变我存储引用的方式?例如,通过对象,但我如何能够通过 id 号找到正确的参考。

【问题讨论】:

    标签: javascript loops


    【解决方案1】:

    听起来你最好使用一个对象来存储引用

    var channel_boards = {};
    var channel_id = 1;
    // add property
    channel_boards["channel_" + channel_id] = ......
    
    // enumerate properties
    for (var key in channel_boards) {
        if (channel_boards.hasOwnProperty(key) {
            channel_boards[key].attr(......
        }
    }
    
    // delete property
    delete channel_boards["channel_" + channel_id];
    

    【讨论】:

    • 该死的我很笨 :) 谢谢,只需要添加前缀。 :)
    • 不需要前缀,任何可以转换为字符串的东西都可以(包括数字)。所以你可以逃脱..[channel_id]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2019-10-01
    • 2019-06-20
    • 2021-07-07
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多