объект сортировки вложен и не является массивом

125
11

Я ищу, как сортировать по place.city этот вид объекта, у которого есть идентификатор ключей. Необходимо сохранить идентификатор для первых ключей...

Я пробовал разные методы, но я всегда терпеть неудачу, слишком много ключей.

Я не могу изменить объект, этот плохой архитектурный сервер возвращается API, и у меня нет руки на нем.

{
"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)

спросил(а) 2021-01-25T17:07:32+03:00 4 месяца, 4 недели назад
1
Решение
88

вы можете сделать это с помощью

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)
})

})

ответил(а) 2021-01-25T17:07:32+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема