向关联数组中的所有元素显示键和值

时间:2013-11-20 02:33:45

标签: javascript jquery associative-array

我有一个数组,clientList

[
  [
    clientID: "123"
    data: "data1"
  ]
  [
    clientID: "456"
    data: "data2"
  ]
  [
    clientID: "789"
    data: "data3"
  ]
]

我正在尝试迭代所有3个数组,显示每个数组的所有键和值。

我通过执行标准$.each(clientList, function() {}迭代各个数组。

现在我正在尝试使用$.each($(this), function(key, value) {}迭代单个数组,但键只是数字形式的索引,而不是作为字符串的键名。有没有办法做到这一点?

我发现Iterating an associative array with jQuery .each是一个可能的起点,但是没有办法将$(this)初始化为{},是吗?

4 个答案:

答案 0 :(得分:11)

纯JavaScript有什么问题?您可以使用Object.keysArray.prototype.forEach来浏览对象上的键和值。

// Loops through every single client in the client list.
clientList.forEach(function (client) {
    // Logs each of the key-value pairs on the client object.
    Object.keys(client).forEach(function (key) {
      console.log(key + ': ' + client[key]);
    });
});

答案 1 :(得分:4)

你的数组中存在语法错误,我希望这是一个复制错误,如果是这样的话

var clientList = [{
    clientID: "123",
    data: "data1"
}, {
    clientID: "456",
    data: "data1"
}, {
    clientID: "789",
    data: "data1"
}]

$.each(clientList, function (idx, obj) {
    $.each(this, function(key, val){ //you can use `this` or `obj` to iterate over
        console.log(key, val)
    })
})

演示:Fiddle

each()回调this内部引用了一个javascript对象,所以你不应该尝试使用$(this)创建一个jQuery包装器,同时传递给第二个each()调用

答案 2 :(得分:2)

你需要这样的东西:

var clientList = [
    {
        clientID: "123",
        data: "data1"
    },
    {
        clientID: "456",
        data: "data1"
    },
    {
        clientID: "789",
        data: "data1"
    }
];

$(document).ready(function(){
    var output = $('#output');
    $.each(clientList, function(index, obj){
        output.append('<div>Item ' + index + '</div>');
        $.each(obj, function(key, value){
             output.append('<div>' + key + ' = ' + value + '</div>');
        });
        output.append('<br />');
    });
});

http://jsfiddle.net/4JcjR/

答案 3 :(得分:1)

如果您只想在调试器中打印出来,请尝试Object.entries(yourAssociativeArray)