mas*_*043 0 javascript arrays jquery
我有一个代码:
var arr = {"1":["val"],"1.5":["val"],"2":["val"],"2.5":["val"],"3":["val"]};
jQuery.each( arr, function( index, value ) {
console.log(index + ':' + value)
});
Run Code Online (Sandbox Code Playgroud)
我需要显示数组中的每个元素,但我得到:
1:val
2:val
3:val
1.5:val
2.5:val
Run Code Online (Sandbox Code Playgroud)
但我需要以这种形式得到它:
1:val
1.5:val
2:val
2.5:val
3:val
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
那不是数组,它是一个非数组对象.非数组对象没有内在的顺序.*要对它们强加顺序,你得到键(属性名称),按顺序放置它们,然后遍历这些名称.像这样的东西:
var arr = {"1":["val"],"1.5":["val"],"2":["val"],"2.5":["val"],"3":["val"]};
jQuery.each( Object.keys(arr).sort(sortNumerically), function( index, name ) {
console.log(name + ':' + arr[name])
});
// Somewhere reusable
function sortNumerically(a, b) {
var anum = parseFloat(a),
bnum = parseFloat(b);
return anum - bnum;
}
Run Code Online (Sandbox Code Playgroud)
Object.keys是一个ES5函数,它为您提供一个对象的"自有"可枚举属性的名称数组,作为一个数组.(您可以在ES5之前的引擎上添加垫片.)对Array#sort阵列进行排序.(默认排序是lexigraphic,所以我放入了一个函数来进行数值比较.)然后我们遍历排序的数组,检查对象的属性.
(*就此而言,JavaScript的标准数组只按惯例排序,例如,数组索引的数字关系.除了引擎对它们进行优化时,它们不是真正的数组,也不是必须以数字顺序存储的条目.)
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |