【发布时间】:2015-10-21 18:21:48
【问题描述】:
我正在使用 $.getJSON 从数据源中提取一些数据,结果以 JSON 形式出现,但它是这种格式(因为它来自表):
result {
0: Array {
0: 'First Name',
1: 'Last Name',
2: 'City',
3: 'State'
}
1: Array {
0: 'John',
1: 'Doe',
2: 'Portland',
3: 'Oregon'
}
2: Array {
0: 'Jane',
1: 'Doe',
2: 'Seattle',
3: 'Washington'
}
}
我需要将这些数据变成看起来更像这样的东西:
Object {
'First Name': 'John', 'Jane'
'Last Name': 'Doe', 'Doe'
'City': 'Portland', 'Seattle'
'State': 'Oregon', 'Washington'
}
我以为我只需将它们放入几个 $.each() 循环中,但我似乎无法获得一个对象,其中第一个数组的值作为键,匹配值作为分配给它的数组中的项钥匙。我尝试过这样的事情:
var tmpArray = [];
var labelKeys = [];
$.each(result, function(key, val){
if (key < 1){
$.each(val, function(labelKey, labelVal){
labelKeys.push(labelVal);
}
} else {
for (var i=0; i<labelKeys.length;i++){
tmpArray[labelKeys[i]].push(val[i]);
}
}
}
这不起作用,我收到 push() 的未定义错误。
我可以将所有数组分离成它们自己的数组并将它们输出到控制台,但我不知道如何使用键值将数据推送到对象或数组。
如何将值推送到对象,以便循环遍历数组并将对象分组到相同编号的位置,并将其分配给第一个数组中相同位置的键?
【问题讨论】:
-
你不能在
tmpArray[labelKeys[i]]上调用.push(),因为它还不存在。 -
什么意思? labelKeys[i] 将在第一次迭代后存在,并且在它确实存在之前永远不会到达第二行。我什至可以添加
console.log(labelKeys[i]),它会吐出正确的键。你能再解释一下吗?
标签: javascript jquery arrays json object