js中for in循环对象时的取值处理

一个特别奇怪的问题:返回Obj中的键值对顺序和for in取数据时的键值对对应不上

最后查询资料才发现:

 

       Chrome Opera 的 JavaScript 解析引擎遵循的是新版 ECMA-262 第五版规范。因此,使用 for-in 语句遍历对象属性时遍历书序并非属性构建顺序。而 IE6 IE7 IE8 Firefox Safari 的 JavaScript 解析引擎遵循的是较老的 ECMA-262 第三版规范,属性遍历顺序由属性构建的顺序决定。
for-in 语句无法保证遍历顺序,应尽量避免编写依赖对象属性顺序的代码。如果想顺序遍历一组数据,请使用数组并使用 for 语句遍历。 如果想按照定义的次序遍历对象属性,请参考本文针对各浏览器编写特殊代码。

所以说,当你在js中遍历对象的时候需要做额外的处理。

这里给一个例子做参考:

 

var arr = Object.keys(Obj).sort();//将对象的key进行排序
        for ( var i = 0, len = arr.length; i < len; i++) {
        var showText = arr[i];
        var countNum = cirCountObj[showText];//通过key获取出对应的value
console.log(showText + countNum );
}

你可能感兴趣的:(js中for in循环对象时的取值处理)