简单获取json对象键长度的方法

之前有人问过我类似的问题,我想当然的说直接利用JSON.stringify()方法转化成字符串来获取字符串长度就可以了,但是后来有个问题需要用到获取json对象键长度的时候发现这个方法仅仅限于json的键长度相等,值长度也一一对应的情况,太过于局限,根本不实用,查了好些文档,找的两种方法,在这边整理一下,方便遇到同样问题的朋友来查看,也提醒自己记住这个问题。

第一种方法可能大部分人都能够想得到,就是利用for。。。in循环遍历json对象的键,如果json里面存在,则计数器加1,直到结束。代码如下:

 

<script>
var json={"a":1,"b":2,"c":3,"d":4};
var count = 0;
for(var key in json){
if(json.hasOwnProperty(key)){
count++;
}
}
console.log("json的键长度为"+count)
</script>

第二种方式相对于第一种简单一些,只需要通过Object.keys( )将json对象的键全部存到返回的数组中,调用length方法求长度可以,写起来较第一种更简单,代码如下:

 

 

<script>
var json={"a":1,"b":2,"c":3,"d":4};
var count = Object.keys(json).length;
console.log("json的键长度为"+count);  
</script>

关于Object.keys(obj)方法的介绍简单记录一下:

 

返回值:一个表示给定对象的所有可枚举属性的字符串数组这些属性的顺序与手动遍历该对象属性时的一致。

扩充:如果你想获取一个对象的所有属性,,甚至包括不可枚举的,请查看Object.getOwnPropertyNames

另外:

在ES5里,如果此方法的参数不是对象(而是一个原始值),那么它会抛出 TypeError。在ES2015中,非对象的参数将被强制转换为一个对象。

即时更新:

Object.entries()方案

利用es8新特性:通过object的entries方法,可以直接获取给定对象自身可枚举属性的键值对的数组

const a = {one: 1, two: 2, three: 3};
const arr = Object.entires(a);
// 此时 arr = [{one: 1}, {two: 2}, {three: 3}]
console.log(`a的健长度为:${arr.length}`)

 

 


 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值