从数组中获取正确元素的正确方法

时间:2014-08-11 11:25:37

标签: javascript jquery html arrays algorithm

我有以下两个数组:

var nodes = new Array();
var arr = [{
        name:"abc1",
        type:"blue"
    }, {
        name:"abc2",
        type:"red"
    }, {
        name:"abc3",
        type:"red"
    }, {
        name:"abc4",
        type:"green"
    }, {
        name:"abc5",
        type:"red"
    }, {
        name:"abc6",
        type:"blue"
    }];

阅读“ arr ”中的信息我有一个 2 行的表格,其中没有关于类型不是“蓝色的元素的信息“给出了:

 ---------------------
 |    | name | type  |  } - thead
 ---------------------
 | [] | abc1 | blue  |  } - 1st row
 ---------------------   
 | [] | abc6 | blue  |  } - 2nd row
 ---------------------

每行的复选框元素都有一个“ table_row_checkboxes ”类

单击行中的复选框,我找到整行的索引。 我测试是否选中了复选框。 如果是,请填写名为“ nodes ”的新数组。 如果不是,则清空阵列。

$(".table_row_checkboxes").click(function(){
    var idx = $(this).closest("tr").index(); // row index of the table

    if ($(this).is(":checked")) {
        nodes.push(arr[idx].name);
    } else if($(this).not(":checked")) {
        nodes = $.grep(nodes, function(val_name) {
            return val_name != arr[idx].name;
        });
    }
}

现在我的问题是,当我点击名称为“ abc6 ”的表格元素时,我得到元素的索引号“ 1 ”,这对应到“ arr ”中的元素“ abc2 ”,我的新数组“节点”填充了名称“ abc2 “而不是” abc6 “。

我的问题是,有人可以给我一个提示,这是正确的吗?

1 个答案:

答案 0 :(得分:1)

问题是您的阵列与创建的表之间没有连接。

我建议将自定义属性设置为表格行(tr)(Custom Data Attributes)并在点击时阅读。

您的表格行html应如下所示:

<tr data-array-index="5">[...]</tr>

现在您可以通过以下方式检索行的数组索引:

$(".table_row_checkboxes").click(function(){
    var arrayIndex = $(this).closest("tr").attr("data-array-index");
    [...]

我没有测试它。但我认为这种做法是正确的。