javascript - js中有什么辦法能讓對象進行排序呢?
問題描述
后臺返回了一個json對象,順序是已經(jīng)排好了的
但是我用js像遍歷數(shù)組那樣去for in遍歷這個對象時 結(jié)果和原對象卻不一樣了 查過資料后才知道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:
無解。排好序就應(yīng)該用數(shù)組。或者附帶一個 keys 的數(shù)組。
對象里的順序在 ES5 是沒有規(guī)定的,所以不同的引擎可能會不一樣。
ES6 里 Object.getOwnPropertyNames() 和Object.getOwnPropertySymbols() 以及等效于兩者結(jié)合的 Reflect.ownKeys() 會按一定的順序輸出,但不是你要的答案。
看 json 的結(jié)構(gòu)貌似是按數(shù)字和詞典的順序排,如果是這樣的可以手動排一遍。
回答4:1、我感覺如果你的頁面顯示正好是后端返回的排序的順序,那你就不需要排序,直接顯示就好了。2、如果想要的順序和后端的順序是不一樣的,那就看產(chǎn)品是根據(jù)什么字段排序,排序顯示的。那你就根據(jù)對象里的這個字段進行排序。這樣應(yīng)該可以得到你想要的了。
回答5:// 對array 排序 res.sort((a, b) => { if (a.UserID > b.UserID ) { // 可以改成其他key return 1 } else { return -1 } })回答6:
因為json對象沒有順序,所以“預(yù)先排好的順序”其實并不存在如果說前端要根據(jù)鍵名排序,可以先把鍵名取出,排序,再去取內(nèi)容就行了吧
回答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;});// 按默認(rèn)排序規(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ù)組保存,然后放到j(luò)son的屬性里面。
回答10:Object.keys(obj).sort(function() { // 為了以防萬一,這里先排好鍵值順序,代碼省略,也可以直接用sort()默認(rèn)排序}).map(function(v) { return obj[v]; // 根據(jù)原鍵名從obj中再找對應(yīng)的項});
這樣,返回的是一個數(shù)組,就是固定順序的了。
相關(guān)文章:
1. javascript - 微信網(wǎng)頁開發(fā)從菜單進入頁面后,按返回鍵沒有關(guān)閉瀏覽器而是刷新當(dāng)前頁面,求解決?2. 視頻文件不能播放,怎么辦?3. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處4. mysql - jdbc的問題5. node.js - nodejs開發(fā)中常用的連接mysql的庫6. mysql replace 死鎖7. mysql - 把一個表中的數(shù)據(jù)count更新到另一個表里?8. mysql - 如何減少使用或者不用LEFT JOIN查詢?9. 老師您的微信號是多少?10. mysql - 字符串根據(jù)字典替換
