使用jQuery或JavaScript获取JSON数组的长度

4

我知道有很多类似的问题,但是它们中的任何一个都对我没有用。

我有一个json数组,整个结构如下:

enter image description here

我想获取的数组是这样的:

enter image description here

该json数组的结构如下:

enter image description here

我想获取该json数组的长度。在上面的图像案例中,它是4。 我到目前为止尝试过的是:

console.log( $( data.studentMockBeanMap ).size() );
console.log( $(data.studentMockBeanMap ).length );.

这两个都返回1

我也尝试了这个:

var x = JSON.stringify(data.studentMockBeanMap);
console.log( x.length );

这将返回2257,我认为它也返回了所有json对象的总和。

如何仅获取上面我框出来的图片的大小?


3
那不是一个数组,而是一个具有多个属性的对象。这个答案可能会帮到你:https://dev59.com/tXVC5IYBdhLWcg3w-mZO - EfrainReyes
@EfrainReyes 我明白了。除了你提供的链接,还有其他方法吗?那个解决方案不支持像FF3这样的低版本浏览器,这相当麻烦。 - newbie
特别是标记的答案适用于较新的浏览器,但你有没有检查那个链接上的其他答案以及相应的评论线程? - EfrainReyes
顺便提一下,也可以查看一下这个链接,那种方法可能适用于旧版浏览器:http://stackoverflow.com/a/11369971/2563028 - EfrainReyes
在今晚离开之前还有一件事(这里已经很晚了,如果我评论过多,对不起):你最后一个代码片段得到 2257 的原因不是因为那是所有 JSON 对象的总和,而是因为将 studentMockBeanMap 及其所有子对象转换为 JSON 字符串后生成的字符串长度为 2257。 - EfrainReyes
1
我会查看你提供的链接。感谢你的帮助。 - newbie
2个回答

8

这个功能与Object.keys(obj).length相同,但没有浏览器兼容性问题(我认为)。

那么这样怎么样:

var obj = {
    yo: {
         a: 'foo',
         b: 'bar'
    }
    hi: {
        c: 'hello',
        d: 'world',
        e: 'json'
    }
}

var arr = [], len;

for(key in obj) {
    arr.push(key);
}

len = arr.length;

console.log(len) //2

或者

var arr = [], len;

for(key in obj.hi) {
    arr.push(key);
}

len = arr.length;

console.log(len) //3

或者,对于你的情况

var arr = [], len;

for(key in studentMockBeanMap) {
    arr.push(key);
} 

len = arr.length;

console.log(len); //4

啊,没错。这就是我刚刚做的。谢谢你的帮助。 - newbie

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接