我的问题很简单,但我还没有找到答案。
我有这个数组:
myArray = [
{
id: '123',
color: 'red'
},
{
id: '234',
color: 'blue'
},
{
id: '345',
color: 'red'
},
{
id: '456',
color: 'yellow'
}
]
我想先将这个数组命名为“color:'red'”,并保持其他数组的顺序相同。我希望它是:
myArray = [
{
id: '123',
color: 'red'
},
{
id: '345',
color: 'red'
},
{
id: '234',
color: 'blue'
},
{
id: '456',
color: 'yellow'
}
]
我尝试使用Angular的$ filter,并找到了这样做的方法:
$filter('orderBy')(myArray, function(records) {
return records.color !== 'red';
});
我发现这个解决方案只是在玩,但我真的不明白为什么会这样。我相信应该有一个更好,更容易理解的解决方案。
谢谢!
答案 0 :(得分:4)
有效的原因是javascript中的false小于true,因此红色将在其余部分之前出现。
解决此问题的另一种方法是在您的作用域上使用orderBy过滤器可以使用的函数:
$scope.redsFirst = function(record){
return record.color !== 'red';
}
在视图中:
ng-repeat='record in records | orderBy:redsFirst'