角度排序表Nasted阵列的对象

时间:2016-06-15 09:11:48

标签: angularjs angularjs-filter

试图通过属性值来获得对此数组进行排序的最佳方法。

"data": [
    {
      "id": "1913209a-4b96-4e9f-9377-17cc86cd4465",
      "data": [
        {
          "name": "mid_serial",
          "data": {
            "editable": false,
            "value": "5.65.2.88 - 12338456",
            "required": false,
            "type": "text"
          }
        },
        {
          "name": "status",
          "data": {
            "editable": false,
            "value": "warning",
            "required": false,
            "type": "text"
          }
        },
        ...
      ]
    },
    {
      "id": "1913209a-4b96-4e9f-9377-17cc86cd4465",
      "data": [
        {
          "name": "mid_serial",
          "data": {
            "editable": false,
            "value": "5.65.2.88 - 12338456",
            "required": false,
            "type": "text"
          }
        },
        {
          "name": "status",
          "data": {
            "editable": false,
            "value": "warning",
            "required": false,
            "type": "text"
          }
        },
        ...
      ]
    }
    ...        
  ]

所以我将传递“name”属性,并且数组必须按相应的“value”属性val排序。 (它也可以逆转,但这很容易)

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用Javascript排序功能添加自定义比较器。代码是:

$scope.name = 'status' // Example

data.sort(function(a, b) {
   var aValue, bValue;
   a.data.forEach(function(element) { // Search the value
       if ($scope.name == element.name) aValue = element.data.value;
   }
   b.data.forEach(function(element) { // Search the value
       if ($scope.name == element.name) bValue = element.data.value;
   }
   return aValue - bValue; // Compare them in order to order the array
})

尝试并告诉我一些事情,我现在无法测试。