我有一个数组,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)
初始化为{}
,是吗?
答案 0 :(得分:11)
纯JavaScript有什么问题?您可以使用Object.keys
和Array.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 />');
});
});
答案 3 :(得分:1)
如果您只想在调试器中打印出来,请尝试Object.entries(yourAssociativeArray)