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

right way to get the correct element from array

本文关键字:方法 元素 数组 获取      更新时间:2023-09-26

我有以下两个数组:

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
 ---------------------

每一行的checkbox元素都有一个类"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"。

我的问题是,谁能给我一个提示,什么是正确的?

问题是您的数组和创建的表之间没有连接。

我建议为表行设置一个自定义属性(tr)(自定义数据属性),并在单击时读取。

你的表行html应该看起来像:

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

现在您可以通过:

检索该行的数组索引:
$(".table_row_checkboxes").click(function(){
    var arrayIndex = $(this).closest("tr").attr("data-array-index");
    [...]

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