素材牛VIP会员
js中有什么办法能让对象进行排序呢?
 郑***6  分类:Node.js  人气:1721  回帖:11  发布于6年前 收藏

后台返回了一个json对象,顺序是已经排好了的

但是我用js像遍历数组那样去for in遍历这个对象时 结果和原对象却不一样了 查过资料后才知道js对象是无序的。。 那么有办法顺序遍历这个对象么? 或者怎么顺序得到原对象的属性?

讨论这个帖子(11)垃圾回帖将一律封号处理……

Lv6 码匠
爱***粉 移动开发工程师 6年前#1

JS对象是散列表,可类别java,C#,或Python等里的dict,它们都是无序的。需要有序,就得用Array。

Lv4 码徒
黑***人 JS工程师 6年前#2
ss.sort(function(a, b){
    return a.UserID > b.UserID;
});
Lv4 码徒
go***le 学生 6年前#3
// 对array 排序
 res.sort((a, b) => {
   if (a.UserID > b.UserID ) {  // 可以改成其他key
      return 1
   } else {
      return -1
   }
  })
Lv2 入门
li***ng PHP开发工程师 6年前#4
Object.keys(obj).sort(function() {
    // 为了以防万一,这里先排好键值顺序,代码省略,也可以直接用sort()默认排序
}).map(function(v) {
    return obj[v]; // 根据原键名从obj中再找对应的项
});

这样,返回的是一个数组,就是固定顺序的了。

Lv5 码农
mo***99 产品经理 6年前#5

希望有顺序的值就用数组保存,然后放到json的属性里面。

Lv4 码徒
那***n 产品经理 6年前#6

1、我感觉如果你的页面显示正好是后端返回的排序的顺序,那你就不需要排序,直接显示就好了。
2、如果想要的顺序和后端的顺序是不一样的,那就看产品是根据什么字段排序,排序显示的。那你就根据对象里的这个字段进行排序。
这样应该可以得到你想要的了。

Lv3 码奴
阿***盗 页面重构设计 6年前#7
var obj = {
    1 :[{userID:'1'}],
    2 :[{userID:'2'}],
    H :[{userID:'3'}],
    Z :[{userID:'4'}],
};
var objKeys = Object.keys(obj);
objKeys.sort((a,b) =>{
    return a>b;
}).map((val) => {
    console.log("userID "+ obj[val][0].userID)
});
/ 输出
// userID 1
// userID 2
// userID 3
// userID 4
Lv5 码农
路***过 CEO 6年前#8

因为json对象没有顺序,所以“预先排好的顺序”其实并不存在
如果说前端要根据键名排序,可以先把键名取出,排序,再去取内容就行了吧

Lv5 码农
超***侠 Web前端工程师 6年前#9
Object.keys(objs).sort()可以获取到排好序的keys
var objs = {
    f: {
        id: 2,
        name: '2'
    }, 
    a: {
        id: 3,
        name: '3'
    }, 
    c: {
        id: 1,
        name: '1'
    }
};
// 自定义排序规则,按对象的id排序
var sortedObjKeys = Object.keys(objs).sort(function(a, b) {
    return objs[b].id - objs[a].id;
});

// 按默认排序规则,按对象的key排序
var sortedObjKeys = Object.keys(objs).sort();

for (var index in sortedObjKeys) {
    console.log(sortedObjKeys[index]);
    console.log(objs[sortedObjKeys[index]]);
    console.log('----------');
}
Lv5 码农
龙***6 UI设计师 6年前#10

既然后台返回的是排序好的数据,如果你用的是ajax请求数据,dataType:json,你接收到数据之后,直接遍历,填充在模板中就可以了啊。如果顺序不对,我感觉是你从后台拿到的数据不对的原因

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取