[英]sort object nested and is not an array
我搜索如何按place.city
排序,这种具有ID的键的对象。 需要保留第一把钥匙的ID…
我尝试了不同的方法,但是我总是失败,密钥太多。
我无法更改对象,这种架构不好的对象是由API get返回的,而我却没有帮助。
{
"123": {
0: {
"place": {
"city": "New York",
"country": "USA"
},
"person": {
"name": "Bob",
"age": 45
}
},
1: {
"place": {
"city": "New York",
"country": "USA"
},
"person": {
"name": "James",
"age": 32
}
}
},
"456": {
0: {
"place": {
"city": "Chicago",
"country": "USA"
},
"person": {
"name": "Louis",
"age": 34
}
},
1: {
"place": {
"city": "Chicago",
"country": "USA"
},
"person": {
"name": "Christine",
"age": 65
}
}
},
"789": {
0: {
"place": {
"city": "Dallas",
"country": "USA"
},
"person": {
"name": "Kevin",
"age": 27
}
},
1: {
"place": {
"city": "Dallas",
"country": "USA"
},
"person": {
"name": "Robert",
"age": 55
}
},
2: {
"place": {
"city": "Dallas",
"country": "USA"
},
"person": {
"name": "Danny",
"age": 62
}
}
}
}
由于我想第二个位置的键,这种过滤器无法正常工作…… var sortedByPlace = _.sortBy(Object.keys(data).map(k => ({id:k, ...data[k]})), (d)=> d.place.city)
你可以做到
var transformed = _.sortByOrder(obj, (e)=> {
if(e.place){
return e.place.city
}else{
return e.name
}
}, ['asc']);
结果将是您排序的对象的数组。
那你就可以跑
var mySortedArr = []
_.each(kkk,(val,key)=>{
_.each(val,(innerVal,innerKey)=>{
mySortedArr.push(innerVal)
})
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.