2016-06-15 5 views
0

この配列をプロパティ値でソートする最も良い方法を試そうとしています。角度の並び替え表オブジェクトの未配置配列

"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でソートする必要があります。 (それも逆にすることができるが、それは簡単です)事前

+0

期待される結果は何ですか?サブアレイをグループ化するには、それらをより平坦な配列にマップする必要があります – charlietfl

答えて

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

私は今すぐ試してみることができます。

関連する問題