我搜索如何按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)
答案 0 :(得分:0)
你可以用
做到这一点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)
})
})