rks*_*ksh 47 javascript jquery json
我有一组由PHP json_encode
函数传递的数据.我正在使用jQuery getJSON
函数对其进行解码:
$.getJSON("url", function (data) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
控制台中的输出如下所示:
Object {1: Object, 2: Object, 3: Object, 4: Object, 5: Object, 6: Object, 7: Object, 8: Object, 9: Object, 10: Object}
Run Code Online (Sandbox Code Playgroud)
我可以通过访问每个阵列data[1]
,data[2]
等等,但更容易我想循环的思想,所以我能够同时访问所有:
$.getJSON("url", function (data) {
for (var i = 0, len = data.length; i < len; i++) {
//do something
}
});
Run Code Online (Sandbox Code Playgroud)
但是我不能让它工作,因为data.length
返回值undefined
.有什么问题,我该如何解决?
Cer*_*rus 73
对象没有.length
属性.
一个简单的解决方案,如果你知道你不必担心hasOwnProperty
检查,将是这样做:
Object.keys(data).length;
Run Code Online (Sandbox Code Playgroud)
如果你必须支持IE 8或更低版本,你将不得不使用循环,而是:
var length= 0;
for(var key in data) {
if(data.hasOwnProperty(key)){
length++;
}
}
Run Code Online (Sandbox Code Playgroud)
rag*_*net 17
一种选择是:
Object.keys(myObject).length
Run Code Online (Sandbox Code Playgroud)
可悲的是,它不适用于较旧的IE版本(9岁以下).
如果您需要兼容性,请使用痛苦的版本:
var key, count = 0;
for(key in myObject) {
if(myObject.hasOwnProperty(key)) {
count++;
}
}
Run Code Online (Sandbox Code Playgroud)
它看起来好像不是数组而是任意对象.如果您可以控制PHP序列化,则可以更改它.
正如raina77ow 指出的那样,在PHP中执行此操作的一种方法是替换以下内容:
json_encode($something)
Run Code Online (Sandbox Code Playgroud)
有类似的东西:
json_encode(array_values($something))
Run Code Online (Sandbox Code Playgroud)
但是不要忽视这里的其他答案Object.keys
.如果你没有能力或想要改变对象的序列化,他们也应该完成你想要的.
归档时间: |
|
查看次数: |
102543 次 |
最近记录: |