对象key值为数字时的处理

先说解决办法:

通过a[key]的方式获取。

具体场景是这样的:

有一个对象的key是数字组成的,这时候使用a.b的形式就不能获取到相应的value值,

如下图:

a.‘111‘会报错。

特别说明:

a[‘111‘]和a[111]两种写法都是一样的,没有什么区别,此用法与数组用下标访问是相同的。

另:

当对象的key为一个变量时,并且使用在循环中,那我们可以通过data[‘key‘]这种方式来动态生成对象,eg:

总结:

1.对象的key一般应使用合法的变量名(字母或下划线开头的包括字母、下划线和数字的字符串) ,这种情况下通过a.key 或者 a[‘key‘]的方式都可以获取到相应的value值。

2.当特殊场景key为数字的情况下,只能通过a[‘key‘]的方式来获取相应的value值。

    如当建立一个与数据库中id一一对应的map对象的时候,

可直接用id的数值做key,虽然你可以给它加上一个字母前缀来让它符合合法的变量名的标准,

并让它的数据能通过data.key的方式访问,

但如果数据量非常大的话,

为每个id都加一个前缀,+字符连接运算也是要消耗性能的,

特别是在很少需要采用data.key方式去访问属性的情况下,

那么可以抛弃此调用方式,直接用数字做key也未尝不可,

除了key名称不符合合法变量名的标准之外,似乎并没有其它损失;

时间: 2024-08-06 11:57:55

对象key值为数字时的处理的相关文章

JSON的key值为数字时如何使用

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON成为理想的数据交换语言. 比较标准的写法:

解决js array的key不为数字时获取长度的问题

最近写js时碰到了当数组key不为数字时,获取数组的长度为0 的情况. 1.问题场景 var arr = new Array();arr['s1'] = 1001;console.log(arr.length); 通过firebug查看: 2.原因分析 js Array只支持数字索引,若指定的key为非数字索引,那么length为0. 另外,若key为数字索引,length的长度是根据key值得出的,比如一个数组a中key最大值为1000,value为1000,那么a的长度就是1001.只有a[

键值是数字时的处理方式

同事碰到接口返回为数值的键值,想处理成自己想要的键值的对象,于是写了个方法来处理类似的数据 '{"1":"凭订单详情页的入园凭证(入园辅助码或二维码)入园","2":"凭下单时预留的身份证入园","3":""}'  处理成自己想要的键值的对象 const content = '{"1":"凭订单详情页的入园凭证(入园辅助码或二维码)入园",&quo

JavaScript对象根据Key值排序

近日在工作中遇到了一个挺有意思的问题.对JS的对象按Key值排序.如下面的obj对象 var obj ={"中国(100)":"'beijing','sichuan' ,'jilin'","英国大不列颠(2)" :"'london','airland'","美国加州(5)":"'phonix','atalata'","德意志(4)":"'berlin','e

Js中获取对象的所有key值

假如现在有一个对象 var obj = { A:2 ,B:"Ray" ,C:true ,D:function(){} } 如果想遍历对象obj中的所有键值,一般是用以下方式 for(var key in obj){ console.log(key,obj[key]) } 输出: A 2 B Ray C true D function (){} 如果只是想获取所有的key值,用上面的方法也行得通. 但有更简单的方式:Object.keys(...),返回值是包含key的数组 如 cons

数据更新时的Key值判断(C#)

今天在工作过程中遇到下面的小问题,在更新数据时我想检查该数据Key是否已经存在,如果不存在则直接添加,否则则根据其他状态再判断是否需要更新. 这就需要首先获取已经存在的Key的集合.可以使用以下方法实现,比如Key值为一个字符串. List<string> 检查方法为Contains,该方法会遍历List的中的某一个值进行比较.性能较差. Dictionary<string, bool>  记录键和值的相应关系, 如果只是想检查某个键值是否存在,可以使用TryGetValue Ob

spring boot redis序列化key-value时key值前面出现多余值

参考网址:https://blog.csdn.net/yunhaibin/article/details/9001198# 业务涉及将之前的一主二从redis集群改造后5主5从的redis集群,改造完成后发现一个问题,往redis里面写数据时,key值钱面会出现多余的值(比正常的key值里面多了个t6),如下图 用redis链接客户端访问时,会显示乱码,如下图 经参考大神文章,在redis.xml配置增加redis序列化相关匹配信息解决 <bean id="redisTemplate&qu

springboot中处理mybatis返回Map时key值的大小写

为了统一不同数据库返回key值大小写不一致的问题,特自定义ObjectWrapperFactory来做统一的处理 1,首先自定义MapWrapper /** * 将Map的key全部转换为小写 * */ public class MapKeyLowerWrapper extends MapWrapper { public MapKeyLowerWrapper(MetaObject metaObject, Map<String, Object> map) { super(metaObject,

js修改对象的key值

var array = [ { id:1, name:"小明" }, { id:2, name:"小红" } ]; /**/ //旧key到新key的映射 var keyMap = { "id" : "value", "name" : "label" }; for(var i = 0;i < array.length;i++){ var obj = array[i]; for(va