在angularjs二维数组通过订购 [英] Order by in 2d array in angularjs
本文介绍了在angularjs二维数组通过订购的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有是对象的数组,每个对象还包含在其他angularJS嵌套数组。通常有2-D数组,我想显示将由嵌套数组进行排序的数组值命名为任务。
下面是我的code。
谢谢你是进步...
VAR应用= angular.module(应用,[])。控制器(CTRL1',函数($范围){
$ scope.record = [
{UNIQUEID:PP-12,产品名称:吉姆,状态:批准,任务:['XX','呃']},
{UNIQUEID:PP-11,产品名称:吉姆,状态:已取消,任务:AA,VY','SD']},
{UNIQUEID:PP-45,产品名称:尼克,状态:待定,任务:AV]},
{UNIQUEID:PP-32,产品名称:托马斯,状态:已取消,任务:['ZC','在'YM','下']},
{UNIQUEID:PP-01,产品名称:托马斯,状态:待定,任务:['XY','FR']},
{UNIQUEID:PP-09,产品名称:尼克,状态:批准,任务:['AA','SD',CF]},
{UNIQUEID:PP-23,产品名称:丽娜,状态:'请求',任务:AV,BS,嗯,TR]},
{UNIQUEID:PP-39,产品名称:吉姆,状态:待定,任务:['ZC']}
];
});<表边框=1>
<&THEAD GT;
&所述; TR>
< TD>唯一ID< / TD>
< TD>名称和LT; / TD>
< TD>状态和LT; / TD>
< TD>任务和LT; / TD>
< / TR>
< / THEAD> < TBODY NG重复=数据记录>
< TR NG重复=计划data.tasks轨道由$指数|排序依据:任务>
&所述; TD> {{data.uniqueID}}< / TD>
&所述; TD> {{data.Name}}< / TD>
&所述; TD> {{data.status}}< / TD>
&所述; TD> {{}计划}< / TD>
< / TR>
< / TBODY>
< /表>
解决方案
只能使用一个循环,创建一个新的有序数组,尝试:
.filter(RecordFilter的功能(){
返回功能(记录){
VAR ARR = [];
angular.forEach(记录功能(记录){
angular.forEach(record.tasks,功能(计划){
arr.push(angular.extend({},记录{计划:计划}))
})
});
返回arr.sort(功能(A,B){
返回a.plan> b.plan? 1:-1
})
}
})
<&TBODY GT;
< TR NG重复=数据记录| RecordFilter的轨道由$指数>
&所述; TD> {{data.uniqueID}}< / TD>
&所述; TD> {{data.Name}}< / TD>
&所述; TD> {{data.status}}< / TD>
&所述; TD> {{data.plan}}< / TD>
< / TR>
< / TBODY>
There is an array of objects and each object also contains another nested array in angularJS. Typically there is 2-d array and I want to display the array value which will be ordered by the nested array named 'tasks'.
Here is my code. Thanks is advance...
var app = angular.module('app',[]).controller('ctrl1', function($scope){
$scope.record = [
{uniqueID : 'pp-12', Name : 'Jim', status : 'Approved', tasks : ['xx', 'er'] },
{uniqueID : 'pp-11', Name : 'Jim', status : 'Canceled', tasks : ['aa', 'vy','sd'] },
{uniqueID : 'pp-45', Name : 'Nick', status : 'Pending', tasks : ['av'] },
{uniqueID : 'pp-32', Name : 'Thomas', status : 'Canceled', tasks : ['zc', 'ym','at', 'lt'] },
{uniqueID : 'pp-01', Name : 'Thomas', status : 'Pending', tasks : ['xy', 'fr'] },
{uniqueID : 'pp-09', Name : 'Nick', status : 'Approved', tasks : ['aa', 'sd','cf'] },
{uniqueID : 'pp-23', Name : 'Lina', status : 'Requested', tasks : ['av', 'bs','ay','tr'] },
{uniqueID : 'pp-39', Name : 'Jim', status : 'Pending', tasks : ['zc'] }
];
});
<table border="1">
<thead>
<tr>
<td>Unique ID</td>
<td>Name</td>
<td>Status</td>
<td>tasks</td>
</tr>
</thead>
<tbody ng-repeat="data in record">
<tr ng-repeat="plan in data.tasks track by $index | orderBy : tasks" >
<td> {{data.uniqueID}}</td>
<td> {{data.Name}}</td>
<td> {{data.status}}</td>
<td> {{plan}}</td>
</tr>
</tbody>
</table>
解决方案
Can use only a loop, creating a new sorted array, Try:
.filter("recordFilter", function(){
return function(records){
var arr = [];
angular.forEach(records, function(record){
angular.forEach(record.tasks, function(plan){
arr.push(angular.extend({}, record, {plan:plan}))
})
});
return arr.sort(function(a,b){
return a.plan > b.plan ? 1 : -1
})
}
})
<tbody>
<tr ng-repeat="data in record | recordFilter track by $index">
<td> {{data.uniqueID}}</td>
<td> {{data.Name}}</td>
<td> {{data.status}}</td>
<td> {{data.plan}}</td>
</tr>
</tbody>
这篇关于在angularjs二维数组通过订购的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文