欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

js对象数组排序疏失

更新时间: 2014-01-05 01:50:47 责任编辑: Author_N1

 

JS对象数组排序出错

<script language="javascript">
var arr={"11": 5, "52": 1, "23": 1, "33": 1, "32": 1, "31": 6, "45": 1, "37": 2, "43": 1, "36": 1, "61": 1, "62": 1, "400": 3, "100": 4, "81": 1, "44": 1}
var arrDic = new Array();
var i = 0;
for(var p in arr)
{
var obj = new Object();
obj.id = parseInt(p);
    obj.num = parseInt(arr[p]);
    arrDic.push(obj);
i++;
}

for (var i=0;i<arrDic.length;i++){
document.write(arrDic[i].id+' '+arrDic[i].num+'<br>');
}
document.write("----------------------</br>");
arrDic.sort(function cmp(a,b){return a.num-b.num>0;});
for (var i=0;i<arrDic.length;i++){
document.write(arrDic[i].id+' '+arrDic[i].num+'<br>');
}
</script>


如上代码,我把arr(它其实是一个对象)中的每对属性取出来,并放到一个对象数组arrDic中。然后对这个arrDic进行排序。 为什么结果还是乱序的? 
--参考方法--

rrDic.sort(function cmp(a,b){return a.num-b.num;});

--参考方法--
<script language="javascript">
var arr={"11": 5, "52": 1, "23": 1, "33": 1, "32": 1, "31": 6, "45": 1, "37": 2, "43": 1, "36": 1, "61": 1, "62": 1, "400": 3, "100": 4, "81": 1, "44": 1}
var arrDic = new Array();
var i = 0;
for(var p in arr)
{
var obj = new Object();
obj.id = parseInt(p);
    obj.num = parseInt(arr[p]);
    arrDic.push(obj);
i++;
}

for (var i=0;i<arrDic.length;i++){
document.write(arrDic[i].id+' '+arrDic[i].num+'<br>');
}
document.write("----------------------</br>");
arrDic.sort(function cmp(a,b){return a.num-b.num;});
for (var i=0;i<arrDic.length;i++){
document.write(arrDic[i].id+' '+arrDic[i].num+'<br>');
}
</script>
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:50:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1927/
本文WWW.DOC100.NET DOC100.NET版权所有。