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;});// 按默認排序規(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()默認排序}).map(function(v) { return obj[v]; // 根據(jù)原鍵名從obj中再找對應(yīng)的項});
這樣,返回的是一個數(shù)組,就是固定順序的了。
相關(guān)文章:
1. html5 - angularjs中外部模版加載無法使用2. 在MySQL中新增字段時,報錯??3. 老哥們求助啊4. java - 安卓電視盒子取得了root權(quán)限但是不能安裝第三方應(yīng)用,請問該怎么辦?5. javascript - js 寫一個正則 提取文本中的數(shù)據(jù)6. npm鏡像站全新上線7. javascript - vue-router怎么不能實現(xiàn)跳轉(zhuǎn)呢8. css3 - 請問一下在移動端CSS布局布局中通常需要用到哪些元素,屬性?9. python - 模擬滑動驗證碼,有源碼,求解10. 我的Apache卡在這里不動了怎么辦?
