javascript - js中有什么辦法能讓對象進行排序呢?
問題描述
后臺返回了一個json對象,順序是已經(jīng)排好了的
但是我用js像遍歷數(shù)組那樣去for in遍歷這個對象時 結果和原對象卻不一樣了 查過資料后才知道js對象是無序的。。 那么有辦法順序遍歷這個對象么? 或者怎么順序得到原對象的屬性?
問題解答
回答1:ss.sort(function(a, b){ return a.UserID > b.UserID;});回答2:
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回答3:
無解。排好序就應該用數(shù)組。或者附帶一個 keys 的數(shù)組。
對象里的順序在 ES5 是沒有規(guī)定的,所以不同的引擎可能會不一樣。
ES6 里 Object.getOwnPropertyNames() 和Object.getOwnPropertySymbols() 以及等效于兩者結合的 Reflect.ownKeys() 會按一定的順序輸出,但不是你要的答案。
看 json 的結構貌似是按數(shù)字和詞典的順序排,如果是這樣的可以手動排一遍。
回答4:1、我感覺如果你的頁面顯示正好是后端返回的排序的順序,那你就不需要排序,直接顯示就好了。2、如果想要的順序和后端的順序是不一樣的,那就看產(chǎn)品是根據(jù)什么字段排序,排序顯示的。那你就根據(jù)對象里的這個字段進行排序。這樣應該可以得到你想要的了。
回答5:// 對array 排序 res.sort((a, b) => { if (a.UserID > b.UserID ) { // 可以改成其他key return 1 } else { return -1 } })回答6:
因為json對象沒有順序,所以“預先排好的順序”其實并不存在如果說前端要根據(jù)鍵名排序,可以先把鍵名取出,排序,再去取內容就行了吧
回答7:既然后臺返回的是排序好的數(shù)據(jù),如果你用的是ajax請求數(shù)據(jù),dataType:json,你接收到數(shù)據(jù)之后,直接遍歷,填充在模板中就可以了啊。如果順序不對,我感覺是你從后臺拿到的數(shù)據(jù)不對的原因
回答8:Object.keys(objs).sort()可以獲取到排好序的keys
var objs = { f: {id: 2,name: ’2’ }, a: {id: 3,name: ’3’ }, c: {id: 1,name: ’1’ }};// 自定義排序規(guī)則,按對象的id排序var sortedObjKeys = Object.keys(objs).sort(function(a, b) { return objs[b].id - objs[a].id;});// 按默認排序規(guī)則,按對象的key排序var sortedObjKeys = Object.keys(objs).sort();for (var index in sortedObjKeys) { console.log(sortedObjKeys[index]); console.log(objs[sortedObjKeys[index]]); console.log(’----------’);}回答9:
希望有順序的值就用數(shù)組保存,然后放到json的屬性里面。
回答10:Object.keys(obj).sort(function() { // 為了以防萬一,這里先排好鍵值順序,代碼省略,也可以直接用sort()默認排序}).map(function(v) { return obj[v]; // 根據(jù)原鍵名從obj中再找對應的項});
這樣,返回的是一個數(shù)組,就是固定順序的了。
相關文章:
1. java - ehcache緩存用的是虛擬機內存么?2. javascript - JS如何取對稱范圍的隨機數(shù)?3. 數(shù)據(jù)庫 - mysql如何處理數(shù)據(jù)變化中的事務?4. 關于docker下的nginx壓力測試5. javascript - 有什么兼容性比較好的辦法來判斷瀏覽器窗口的類型?6. java - mongodb分片集群下,count和聚合統(tǒng)計問題7. android - java 泛型不支持數(shù)組,那么RxJava的Map集合有什么方便的手段可以定義獲得一串共同父類集合數(shù)據(jù)呢?8. 服務器端 - 采用nginx做web服務器,C++開發(fā)應用程序 出現(xiàn)拒絕連接請求?9. java - 自己制作一個視頻播放器,遇到問題,用的是內置surfaceview類,具體看代碼!10. dockerfile - 我用docker build的時候出現(xiàn)下邊問題 麻煩幫我看一下
