suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Gibt es eine Möglichkeit, Objekte in JS zu sortieren?

Ein JSON-Objekt wurde im Hintergrund zurückgegeben und die Reihenfolge wurde arrangiert

Aber wenn ich js verwende, um dieses Objekt wie ein Array zu durchlaufen, unterscheidet sich das Ergebnis vom ursprünglichen Objekt. Nachdem ich die Informationen überprüft habe, stellte ich fest, dass das js-Objekt ungeordnet ist. . Gibt es also eine Möglichkeit, dieses Objekt sequentiell zu durchlaufen? Oder wie bringt man die Eigenschaften des Originalobjekts in Ordnung?

仅有的幸福仅有的幸福2712 Tage vor1051

Antworte allen(10)Ich werde antworten

  • 为情所困

    为情所困2017-06-29 10:11:03

    ss.sort(function(a, b){
        return a.UserID > b.UserID;
    });

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-06-29 10:11:03

    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

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-06-29 10:11:03

    无解。排好序就应该用数组。或者附带一个 keys 的数组。

    对象里的顺序在 ES5 是没有规定的,所以不同的引擎可能会不一样。

    ES6 里 Object.getOwnPropertyNames()Object.getOwnPropertySymbols() 以及等效于两者结合的 Reflect.ownKeys() 会按一定的顺序输出,但不是你要的答案。

    看 json 的结构貌似是按数字和词典的顺序排,如果是这样的可以手动排一遍。

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-06-29 10:11:03

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

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-06-29 10:11:03

    // 对array 排序
     res.sort((a, b) => {
       if (a.UserID > b.UserID ) {  // 可以改成其他key
          return 1
       } else {
          return -1
       }
      })
    

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-29 10:11:03

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

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-06-29 10:11:03

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

    Antwort
    0
  • 代言

    代言2017-06-29 10:11:03

    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('----------');
    }

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-29 10:11:03

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

    Antwort
    0
  • 高洛峰

    高洛峰2017-06-29 10:11:03

    Object.keys(obj).sort(function() {
        // 为了以防万一,这里先排好键值顺序,代码省略,也可以直接用sort()默认排序
    }).map(function(v) {
        return obj[v]; // 根据原键名从obj中再找对应的项
    });

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

    Antwort
    0
  • StornierenAntwort