使用角度 js 按顺序列表排序
Sort in order list using angular js
不知何故,我已经使用Angular jS在一定程度上管理了颜色排序顺序的显示。但是,总的来说,它无法正常工作。这是代码和小提琴。我正在尝试以绿色,蓝色,黄色和红色顺序显示
法典
angular.module('MyModule', [])
.controller( 'MyController', function($scope){
$scope.redsFirst=[];
$scope.myArray = [
{
id: '123',
color: 'red'
},
{
id: '234',
color: 'blue'
},
{
id: '345',
color: 'red'
},
{
id: '456',
color: 'yellow'
},
{
id: '789',
color: 'green'
}
];
getSortedColors();
function getSortedColors() {
var colorsOrder = [{color:'green'},{color:'blue'},{color:'yellow'},{color:'red'}]
$scope.redsFirst=angular.copy($scope.myArray);
$scope.redsFirst.sort(function(a,b){
return 1+colorsOrder.map(function(x){
return x.color;
}).indexOf(b.color)
})
}
});
小提琴:
http://jsfiddle.net/kjuemhua/4/
请更新您的JS文件,同样可在 http://jsfiddle.net/kjuemhua/5/
angular.module('MyModule', [])
.controller( 'MyController', function($scope){
$scope.redsFirst=[];
$scope.myArray = [
{
id: '123',
color: 'red'
},
{
id: '234',
color: 'blue'
},
{
id: '345',
color: 'red'
},
{
id: '456',
color: 'yellow'
},
{
id: '789',
color: 'green'
}
];
getSortedColors();
function getSortedColors() {
var colorsOrder = [{color:'green'},{color:'blue'},{color:'yellow'},{color:'red'}]
for(color in colorsOrder) {
for(objColor in $scope.myArray) {
if(colorsOrder[color].color === $scope.myArray[objColor].color) {
$scope.redsFirst.push($scope.myArray[objColor]);
}
}
}
}
});
如果您的目标是按颜色排序,答案是:
<div ng-app='MyModule' ng-controller='MyController'>
<h1>Unsorted</h1>
<ul>
<li ng-repeat='item in myArray'>{{item.color}} - {{item.id}}</li>
</ul>
<h1>Sorted by color</h1>
<ul>
<li ng-repeat="item in redsFirst | orderBy: 'color'">{{item.color}} - {{item.id}}</li>
</ul>
</div>
在 js 文件中:
angular.module('MyModule', [])
.controller( 'MyController', function($scope){
$scope.redsFirst=[];
$scope.myArray = [
{
id: '123',
color: 'red'
},
{
id: '234',
color: 'blue'
},
{
id: '345',
color: 'red'
},
{
id: '456',
color: 'yellow'
},
{
id: '789',
color: 'green'
}
];
$scope.redsFirst=angular.copy($scope.myArray);
});
检查此解决方案。您不必在 colorsOrder 中声明所有颜色。演示:http://jsfiddle.net/fzLwr921/
angular.module('MyModule', [])
.controller( 'MyController', function($scope){
$scope.redsFirst=[];
$scope.myArray = [
{
id: '123',
color: 'red'
},
{
id: '234',
color: 'blue'
},
{
id: '345',
color: 'red'
},
{
id: '456',
color: 'yellow'
},
{
id: '789',
color: 'green'
}
];
getSortedColors();
function getSortedColors() {
var colorsOrder = [{color:'yellow'},{color:'red'}];
$scope.redsFirst=angular.copy($scope.myArray).sort(function(a,b){
var colorsMap = colorsOrder.map(function(x){ return x.color; });
var indexA = 1+colorsMap.indexOf(a.color);
var indexB = 1+colorsMap.indexOf(b.color);
if( indexA*indexB === 0)
return indexB - indexA;
else
return indexA - indexB;
})
};
});
相关文章:
- 如何随机显示列表项的顺序
- 对Soundcloud自定义播放器播放列表的顺序进行排序
- 如何在角度js的自动完成下拉列表中对项目列表(按字母顺序)进行排序
- 如何根据 js 中每个单词的第 n 个字母按字母顺序排列列表
- 按调用顺序返回由Ajax/HTTP生成的数据列表
- 插入按字母顺序、javascript或jquery排序的新列表
- Mvc4将Jquery可排序列表项的顺序保持到控制器
- 按字母顺序排列列表
- 如何根据GeoJSON属性中的ID号设置下拉列表项的顺序
- 如何跟踪有序列表中的顺序,该列表具有一个循环列表项,提供不同的参数
- 链接的自定义顺序列表
- 从下拉列表中的数组中选取某个项目,然后将其显示为第一项并按字母顺序显示
- 当列表长度未知时按顺序调用 http.get
- 按数字顺序排列列表
- Javascript Regex - word 必须与列表中的任何单词匹配,以任何顺序,带有单词边界
- 如何更改窗体中列表项的顺序
- 保留列表中移动元素的顺序
- 日期的顺序列表如何从对象获取
- 使用角度 js 按顺序列表排序
- 通过JavaScript读取拖放顺序列表