在javascript中对数据对进行分组的最佳方法是什么?

时间:2017-12-04 16:10:28

标签: javascript arrays

不是使用关联数组(对象),关联两个值的最佳方法是什么,因此它们始终关联,并且可以作为单独的值进行访问?关联数组很烦人,因为它们的顺序不受保证,你无法使用索引访问它们。

我可以创建两个单独的数组,但是如果我将它们的顺序随机化以显示它们的关联将不匹配,并且如果它们在代码中是分开的,那么我很可能在记录它们的值时犯错误,将它们置于错误状态为了使它们完美匹配,请订购。

2 个答案:

答案 0 :(得分:1)

在Javascript中,您可以使用多维数组:

var data = [
    [1, 2],
    [3, 4]
];

data[0][0]; // get '1'
data[0][1]; // get '2'

此外,如果您需要以更抽象的方式关联数据,ES6还有WeakMaps

var wm = new WeakMap();
var x = document.createElement("div");
wm.set(x, {foo: 1, bar: 7});

console.log(wm.get(x).bar) // get '7' from object you associated to HTMLElement

答案 1 :(得分:0)

我现在不应该存储哪种数据,但也许您可以尝试以这种方式将数据存储在单个变量中:

var data = [
    {
        "SPAN_ID": "GJVAPIMHKAKHSPN003_BU",
        "MAINTENANCEZONECODE": "INMUMIBH01",
        "REQ_ID": 4.0,
        "LAST_UPDATE_BY": "HARDIK1.SHAH",
        "STATUS_NAME": "HOTO without LIT",
        "PENDING_DAYS": 7.0
    },
     {
        "SPAN_ID": "WDASDF@R#&^@I",
        "MAINTENANCEZONECODE": "WKUYTEISA",
        "REQ_ID": 4.0,
        "LAST_UPDATE_BY": "TEST",
        "STATUS_NAME": "OK",
        "PENDING_DAYS": 7.0
    }
];

var datatojson = JSON.stringify(data);
var parsedata = jQuery.parseJSON(datatojson);

// start from this inside success: function (response) { bla.. bla.. 
var my_table = $(".my_table");
my_table.empty();

$.each(parsedata,function( key, val ){
    var my_tr = "<tr>"
        + "<td>"
        + "<div class='row noPadding'>"
        + "<div class='col-xs-6 colPadding'>"
        + val.SPAN_ID
        + "<a class='button'><i class='fa fa-map-marker' aria-hidden='true'></i></a><a class='button'><i class='fa fa-list' aria-hidden='true'></i></a>"
        + "</div>"
        + "<div class='col-xs-6 colPadding'>"
        + "<p><strong>Request Id :</strong>" + val.REQ_ID + "</p>"
        + "<p><strong>Last Updated by :</strong>" + val.LAST_UPDATE_BY + "</p>"
        + "<p><strong>Status :</strong>" + val.STATUS_NAME + "</p>"
        + "<p><strong>Pending Since :</strong>" + val.PENDING_DAYS + "</p>"
        + "</div>"
        + "</div>"
        + "</td>"
        + "</tr>";

    my_table.append(my_tr); 
});