永发信息网

json数据排序问题

答案:2  悬赏:60  手机版
解决时间 2021-11-19 21:15
json数据排序问题
最佳答案
你写错了。
function sortJson(json,key){ 
for (var i = 0; i < json.length; i++) {
for (var j = 0; j < json.length-1; j++) {
if (json[j][key]>json[j+1][key]) {
var temp=json[j];
json[j]=json[j+1];
json[j+1]=temp;
};
};
};
return json;
};第2个循环里面的是json.length-1,不是json.length-i。
willSort集合的长度是5

外循环第一次循环:i=0;内循环的length=5.
当内循环执行第4次时,j=3,那:
json[j][key]获取到的就是下标为4个对象,也就是最后一个对象,json[j+1][key]获取的是下标为5的对象。而集合willSort集合最大下标才是4.所以当外循环第一次循环,内循环地4次循环时,才会报错
追问function pup1(obj){
for (var i = 0; i < obj.length; i++) {
for (var j=0; j if (obj[j]>obj[j+1]) {
var temp=obj[j];
obj[j]=obj[j+1];
obj[j+1]=temp;
};
};
};
return obj;
};这端代码为什么正确呢追答原因很简单,其实它if (obj[j]>obj[j+1]) 也一样,就是obj[j+1]=undefined,和我之前说的一样,一个对象是undefined不是什么大问题,但是你从undefined里面取值就是问题!它这里没有从undefined里面取值,而你却从undefined里面取值了,
如果你在它这个if里面改成你这里,也会报错,追问分析的相当到位
我这段代码是给数组排序的,数组可以看作是对象,但是json比较特殊,由名称:值组成,所以不能对underfined取值。那我以后就这样写好了
for (var i = 0; i < obj.length; i++) {
for (var j=0; j减去1的同时还要减去i,如果不减去i,就多循环了很多次,效率要低一些追答j
既然你是做排序,那这里必须是j
至于原因,你可以测试一下j
全部回答
数组越界了
当你第一次循环的时候,i=0,内层循环的结束条件就是j而当j=json.length-1时,json[j+1]的访问就造成了数组越界。。追问不会吧,外循环和内循环我定义的是二个变量i和j,当i=0时,内循环从j=0一直运行到json.length-1; j也不会等于json.length-1,只是小于啊
我是根据数组的冒泡排序思想来对json数据中根据某个值来排序

数组的冒泡排序方法,运行都是对的

那么改为json为什么会出错,错误提示是传入的key参数未定义
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
初学收藏光绪当十铜钱应该学习什么
张柏芝《无极》被删的片段。
萧山靖江到1o4国道怎样乘车
乐视Pro3(6G+64G)的系统Android M是32位的
对公企业开户户名汉字长度不超过多少?
摄像中画面重复
用计算器计算48x56,先按(),再按(),然后按(),
64x3.6一32x5.2怎么简便计算?
我想学习粮食化验应该看哪些书?
如何玩转新3D这个?
重庆铜锅鸡的做法
我与你终在一起用古文翻译
微信视频加载失败错误码:501-1
(1)点电荷位于一边长为a的立方体中心,试求在
相亲后男生请我吃饭我拒绝了,是不是会觉
推荐资讯
讲的是一个男的穿越到战国,遇到鬼谷子,鬼谷
祖国呵,我亲爱的祖国1,3节中的意象分别指什么
f212轴承和uc212轴承有何区别
C语言 编写程序,当输入数月份时,显示相应英
两只小爬虫甲和乙,从A点同时出发,沿长方形A
为什么晚清唉宋朝还要屈辱?
mcafee webadvisor是什么软件,主要有什么用
第一个迈进现代化社会的国家是什么
🌺现在人都越来越有学问了,这么低调[
如图。,在三角形ABC中,角BAC=x°,角B=2x°
面粉做大饼怎么做好吃
怎样把菠菜打成菠菜水
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?