从angularjs的过滤器中对嵌套数组(2D数组)数组进行排序

San*_*eep 1 javascript multidimensional-array angularjs angularjs-ng-repeat angularjs-filter

我如何从angularjs的过滤器中对嵌套数组(2D数组)数组进行排序.这对我来说非常复杂.任何人都可以帮忙.感谢我.谢谢...

我有一个2D数组.现在我如何在ng-repeat中对它进行排序.

模板文件......

<ul>
  <span ng-repeat="list in lists">

    <li ng-repeat="list_ in list.list1 | orderBy:'name'">{{list_.name}}</li>
  </span>
</ul>
Run Code Online (Sandbox Code Playgroud)

JS档案......

$scope.lists = [
{
  no : 1,
  list1 : [{
  name : 'A'
},
{
  name : 'M'
}]},
{
  no : 2,
  list1 : [{
  name : 'B'
}]},
{
  no : 5,
  list1 : [{
  name : 'Z'
}]},
{
  no : 3,
  list1 : [{
  name : 'X'
},
{
  name : 'T'
}]}
]
Run Code Online (Sandbox Code Playgroud)

在这里

Pan*_*kar 5

它可以通过使用自定义过滤器将所有内部对象压平在同一级别来实现

标记

  <body ng-app="myApp" ng-controller="myCon">
    <ul>
      <span ng-repeat="list in lists | flatten | orderBy:'+name'">

        <li>{{list.name}}</li>
      </span>
    </ul>
  </body>
Run Code Online (Sandbox Code Playgroud)

过滤

app.filter('flatten', function(){
  return function(array){
    var flattenArray = [];
    angular.forEach(array, function(value, index){
      angular.forEach(value.list1, function(val, index){
        flattenArray.push(val);
      })
    })
    return flattenArray;
  }
})
Run Code Online (Sandbox Code Playgroud)

Plunkr在这里