【问题标题】:Sort only parent objects inside an array by the nested object's property [duplicate]按嵌套对象的属性仅对数组内的父对象进行排序[重复]
【发布时间】:2017-05-19 13:36:06
【问题描述】:
{
  "services": [{
    "id": "b1",
    "address": {
      "location_id": "loc_b1",
      "name": "hunupitiya-2",
      "lon": "",
      "lat": ""
    },
    "size": [1700]
  },{
    "id": "b2",
    "address": {
      "location_id": "loc_b2",
      "name": "kelaniya-1",
      "lon":"" ,
      "lat":"" 
    },
    "size": [2889]
  }]
} 

我在一个数组中有一个对象集合,我需要根据嵌套对象的属性名称对这个对象集合进行排序,将其拆分为“-”(我要查找的属性是 address.name)。所以上面是拆分后的1和2。所以我想要实现的是一个函数,它将返回一个排序的对象数组,如下所示

{
  "services": [{
    "id": "b2",
    "address": {
      "location_id": "loc_b2",
      "name": "kelaniya-1",
      "lon":"" ,
      "lat":""
    },
    "size": [2889]
  },{
    "id": "b1",
    "address": {
      "location_id": "loc_b1",
      "name": "hunupitiya-2",
      "lon": "",
      "lat": ""
    },
    "size": [1700]
  }]
}

我有 31 个对象,我也有没有“-”的对象,所以我尝试从小到大获取一次编号,然后以任意顺序获取其余部分。我创建了一个 jsfiddle 来尝试使用它。

https://jsfiddle.net/cbjosk3g/

【问题讨论】:

    标签: javascript jquery arrays sorting nested


    【解决方案1】:

    您可以将标准 Array#sort 与一个排序函数一起使用,该函数拆分值并获取数组的第二部分。

    var $scope = { services: [{ id: "b1", address: { location_id: "loc_b1", name: "hunupitiya-2", lon: "", lat: "" }, size: [1700] }, { id: "b2", address: { location_id: "loc_b2", name: "kelaniya-1", lon: "", lat: "" }, size: [2889] }] };
    
    $scope.services.sort(function (a, b) {
        return a.address.name.split('-')[1] - b.address.name.split('-')[1];
    });
    
    console.log($scope);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

    • 让控制台填充 sn-p 结果面板的好小技巧 :)
    猜你喜欢
    • 2018-07-02
    • 2023-01-06
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2014-09-17
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多