javascript - js中有什麼辦法能讓物件進行排序呢?
仅有的幸福
仅有的幸福 2017-06-29 10:09:03
0
10
1044

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

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

仅有的幸福
仅有的幸福

全部回覆(10)
为情所困

雷雷

phpcn_u1582

雷雷

巴扎黑

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

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

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

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

phpcn_u1582

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

世界只因有你

雷雷

过去多啦不再A梦

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

仅有的幸福

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

代言

雷雷 雷雷

过去多啦不再A梦

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

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板