javascript - js中有什么辦法能讓對(duì)象進(jìn)行排序呢?
問(wèn)題描述
后臺(tái)返回了一個(gè)json對(duì)象,順序是已經(jīng)排好了的
但是我用js像遍歷數(shù)組那樣去for in遍歷這個(gè)對(duì)象時(shí) 結(jié)果和原對(duì)象卻不一樣了 查過(guò)資料后才知道js對(duì)象是無(wú)序的。。 那么有辦法順序遍歷這個(gè)對(duì)象么? 或者怎么順序得到原對(duì)象的屬性?
問(wèn)題解答
回答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:
無(wú)解。排好序就應(yīng)該用數(shù)組。或者附帶一個(gè) keys 的數(shù)組。
對(duì)象里的順序在 ES5 是沒(méi)有規(guī)定的,所以不同的引擎可能會(huì)不一樣。
ES6 里 Object.getOwnPropertyNames() 和Object.getOwnPropertySymbols() 以及等效于兩者結(jié)合的 Reflect.ownKeys() 會(huì)按一定的順序輸出,但不是你要的答案。
看 json 的結(jié)構(gòu)貌似是按數(shù)字和詞典的順序排,如果是這樣的可以手動(dòng)排一遍。
回答4:1、我感覺(jué)如果你的頁(yè)面顯示正好是后端返回的排序的順序,那你就不需要排序,直接顯示就好了。2、如果想要的順序和后端的順序是不一樣的,那就看產(chǎn)品是根據(jù)什么字段排序,排序顯示的。那你就根據(jù)對(duì)象里的這個(gè)字段進(jìn)行排序。這樣應(yīng)該可以得到你想要的了。
回答5:// 對(duì)array 排序 res.sort((a, b) => { if (a.UserID > b.UserID ) { // 可以改成其他key return 1 } else { return -1 } })回答6:
因?yàn)閖son對(duì)象沒(méi)有順序,所以“預(yù)先排好的順序”其實(shí)并不存在如果說(shuō)前端要根據(jù)鍵名排序,可以先把鍵名取出,排序,再去取內(nèi)容就行了吧
回答7:既然后臺(tái)返回的是排序好的數(shù)據(jù),如果你用的是ajax請(qǐng)求數(shù)據(jù),dataType:json,你接收到數(shù)據(jù)之后,直接遍歷,填充在模板中就可以了啊。如果順序不對(duì),我感覺(jué)是你從后臺(tái)拿到的數(shù)據(jù)不對(duì)的原因
回答8:Object.keys(objs).sort()可以獲取到排好序的keys
var objs = { f: {id: 2,name: ’2’ }, a: {id: 3,name: ’3’ }, c: {id: 1,name: ’1’ }};// 自定義排序規(guī)則,按對(duì)象的id排序var sortedObjKeys = Object.keys(objs).sort(function(a, b) { return objs[b].id - objs[a].id;});// 按默認(rèn)排序規(guī)則,按對(duì)象的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() { // 為了以防萬(wàn)一,這里先排好鍵值順序,代碼省略,也可以直接用sort()默認(rèn)排序}).map(function(v) { return obj[v]; // 根據(jù)原鍵名從obj中再找對(duì)應(yīng)的項(xiàng)});
這樣,返回的是一個(gè)數(shù)組,就是固定順序的了。
相關(guān)文章:
1. javascript - js 修改表格元素的,可以用DOM操作實(shí)現(xiàn)嗎?2. python中def定義的函數(shù)加括號(hào)和不加括號(hào)的區(qū)別?3. javascript - JS使用ele.style.backgoundImage = ’’ =’none’取消背景圖片都無(wú)效4. css3 - 如何出現(xiàn)橫向捲軸?5. 點(diǎn)擊頁(yè)面就自動(dòng)輸入到mysql.求解6. javascript - js一個(gè)call和apply的問(wèn)題?7. 老師,請(qǐng)問(wèn)我打開(kāi)browsersync出現(xiàn)這個(gè)問(wèn)題怎么解決啊?8. javascript - js setTimeout在雙重for循環(huán)中如何使用?9. python - xpath提取網(wǎng)頁(yè)路徑?jīng)]問(wèn)題,但是缺失內(nèi)容?10. javascript - 關(guān)于微信公眾號(hào)開(kāi)發(fā)的一個(gè)trouble!
