javascript - js中有什么办法能让对象进行排序呢?
问题描述
后台返回了一个json对象,顺序是已经排好了的
但是我用js像遍历数组那样去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:
无解。排好序就应该用数组。或者附带一个 keys 的数组。
对象里的顺序在 ES5 是没有规定的,所以不同的引擎可能会不一样。
ES6 里 Object.getOwnPropertyNames() 和Object.getOwnPropertySymbols() 以及等效于两者结合的 Reflect.ownKeys() 会按一定的顺序输出,但不是你要的答案。
看 json 的结构貌似是按数字和词典的顺序排,如果是这样的可以手动排一遍。
回答4:1、我感觉如果你的页面显示正好是后端返回的排序的顺序,那你就不需要排序,直接显示就好了。2、如果想要的顺序和后端的顺序是不一样的,那就看产品是根据什么字段排序,排序显示的。那你就根据对象里的这个字段进行排序。这样应该可以得到你想要的了。
回答5:// 对array 排序 res.sort((a, b) => { if (a.UserID > b.UserID ) { // 可以改成其他key return 1 } else { return -1 } })回答6:
因为json对象没有顺序,所以“预先排好的顺序”其实并不存在如果说前端要根据键名排序,可以先把键名取出,排序,再去取内容就行了吧
回答7:既然后台返回的是排序好的数据,如果你用的是ajax请求数据,dataType:json,你接收到数据之后,直接遍历,填充在模板中就可以了啊。如果顺序不对,我感觉是你从后台拿到的数据不对的原因
回答8:Object.keys(objs).sort()可以获取到排好序的keys
var objs = { f: {id: 2,name: ’2’ }, a: {id: 3,name: ’3’ }, c: {id: 1,name: ’1’ }};// 自定义排序规则,按对象的id排序var sortedObjKeys = Object.keys(objs).sort(function(a, b) { return objs[b].id - objs[a].id;});// 按默认排序规则,按对象的key排序var sortedObjKeys = Object.keys(objs).sort();for (var index in sortedObjKeys) { console.log(sortedObjKeys[index]); console.log(objs[sortedObjKeys[index]]); console.log(’----------’);}回答9:
希望有顺序的值就用数组保存,然后放到json的属性里面。
回答10:Object.keys(obj).sort(function() { // 为了以防万一,这里先排好键值顺序,代码省略,也可以直接用sort()默认排序}).map(function(v) { return obj[v]; // 根据原键名从obj中再找对应的项});
这样,返回的是一个数组,就是固定顺序的了。
相关文章:
1. javascript - 引入 simditor,但是显示标签,这个怎么解决。2. android - 目前有哪些用Vue.js开发移动App的方案?3. 当前访问路由未定义或不匹配,怎么解决这个问题4. javascript - 网易云信整合到项目的流程5. 如何下载网站里面的图片?6. defined这个实验代码我这里不对哇7. linux - 为公司配置服务器,要求在上面装win7的虚拟机,那我还需要装桌面环境吗?8. php mysql_query()问题9. python - 关于flask 静态文件配置404的问题10. python - scrapy获取网页指定内容,后翻到下一页继续,固定循环次数。。问题