Kal*_*reg 0 javascript arrays jquery json
我从PHP获得一个JSON对象,它包含多行,如下所示:
id | type | amount| age
1 | abc | 1 | 1
2 | def | 2 | 1
3 | def | 4 | 2
4 | def | 13 | 3
Run Code Online (Sandbox Code Playgroud)
我通过JavaScript运行它:
$.ajax({
type: 'POST',
url: "test.php",
dataType: 'json',
success: function (data) {
var arr = [];
for (var i = 0; i < data.length; i++) {
arr[data[i].type][data[i].age] = data[i].ammount;
}
}
});
Run Code Online (Sandbox Code Playgroud)
想法是获得如下所示的数组:
arr[def][1] = 2
arr[def][2] = 4
arr[def][3] = 13
arr[abc][1] = 1
arr[abc][2] = 0 // note that this one is just empty because it was not declared from json data.
Run Code Online (Sandbox Code Playgroud)
不幸的是我收到一个错误:
未捕获的TypeError:无法设置未定义的属性"1"
1是[data[i].age],如果我更改其值错误出现与其他数字.
你应该做:
var arr = {};
for (var i = 0; i < data.length; i++) {
var type = data[i].type,
age = data[i].age,
amount = data[i].ammount;
if(!arr[type]) arr[type] = {}; //Create arr[type] if it doesn't exist
arr[type][age] = amount;
}
Run Code Online (Sandbox Code Playgroud)
你可以填充空单元格0,但我最好建议这样做以便阅读:
//returns the value or 0
function readArr(arr, type, age){
if(!arr[type]) return 0;
return arr[type][age] || 0;
}
Run Code Online (Sandbox Code Playgroud)
然后,而不是用读书arr["abc"][2],你会阅读readArr(arr, "abc", 2).
(如果你愿意,当然你可以避免声明一个函数但是使用它的逻辑内联,你会做类似的事情(arr["abc"] ? arr["abc"][2] || 0 : 0))
干杯,来自玻利维亚拉巴斯
| 归档时间: |
|
| 查看次数: |
1159 次 |
| 最近记录: |