首頁  >  問答  >  主體

javascript - js中有什麼辦法能讓物件進行排序呢?

後台回傳了一個json對象,順序是已經排好了的

#但是我用js像遍歷陣列那樣去for in遍歷這個物件時 結果和原物件卻不一樣了 查過資料後才知道js物件是無序的。 。那麼有辦法順序遍歷這個物件麼呢?或是怎麼順序得到原物件的屬性?

仅有的幸福仅有的幸福2693 天前1028

全部回覆(10)我來回復

  • 为情所困

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

    雷雷

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-06-29 10:11:03

    雷雷

    回覆
    0
  • 巴扎黑

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

    無解。排好序就應該用數組。或附帶一個 keys 的陣列。

    物件裡的順序在 ES5 是沒有規定的,所以不同的引擎可能會不一樣。

    ES6 裡 Object.getOwnPropertyNames()Object.getOwnPropertySymbols() 以及等效於兩者結合的 Reflect.ownKeys() 會按一定的順序輸出,但不是你要的答案。

    看 json 的結構貌似是按數字和字典的順序排,如果是這樣的可以手動排一遍。

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-06-29 10:11:03

    1、我感覺如果你的頁面顯示正好是後端返回的排序的順序,那你就不需要排序,直接顯示就好了。
    2、如果想要的順序和後端的順序是不一樣的,那就看產品是根據什麼欄位排序,排序顯示的。那你就根據物件裡的這個欄位進行排序。
    這樣應該可以得到你想要的東西了。

    回覆
    0
  • 世界只因有你

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

    雷雷

    回覆
    0
  • 过去多啦不再A梦

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

    因為json物件沒有順序,所以「預先排好的順序」其實不存在
    如果說前端要依照鍵名排序,可以先把鍵名取出,排序,再去取內容就行了吧

    回覆
    0
  • 仅有的幸福

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

    既然後台返回的是排序好的數據,如果你用的是ajax請求數據,dataType:json,你接收到數據之後,直接遍歷,填充在模板中就可以了啊。如果順序不對,我感覺是你從後台拿到的數據不對的原因

    回覆
    0
  • 代言

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

    雷雷 雷雷

    回覆
    0
  • 过去多啦不再A梦

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

    希望有順序的值就用陣列保存,然後放到json的屬性裡面。

    回覆
    0
  • 高洛峰

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

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

    這樣,回傳的是一個數組,就是固定順序的了。

    回覆
    0
  • 取消回覆