繁体   English   中英

嵌套的排序对象,不是数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM