【问题标题】:AngularJS order by specific property valueAngularJS 按特定属性值排序
【发布时间】:2014-05-14 09:06:28
【问题描述】:

我的问题很简单,但我还没有找到答案。

我有这个数组:

        myArray = [
        {
            id: '123',
            color: 'red'
        },
        {
            id: '234',
            color: 'blue'
        },
        {
            id: '345',
            color: 'red'
        },
        {
            id: '456',
            color: 'yellow'
        }
        ]

我想先订购这个数组,使其具有“颜色:'红色'”的数组,并保持其他数组的顺序相同。我希望它是:

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

我发现这个解决方案只是在玩,但我真的不明白为什么会这样。我相信应该有一个更好的和易于理解的解决方案。

谢谢!

【问题讨论】:

    标签: arrays angularjs sorting filter


    【解决方案1】:

    有效的原因是 javascript 中的 false 小于 true,因此红色将在其余部分之前出现。

    解决此问题的另一种方法是在您的范围内设置一个可由 orderBy 过滤器使用的函数:

    $scope.redsFirst = function(record){
        return record.color !== 'red';
    }
    

    在视图中:

    ng-repeat='record in records | orderBy:redsFirst'
    

    Fiddle

    【讨论】:

      猜你喜欢
      • 2013-01-06
      • 2019-07-27
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多