AngularJs orderBy Sorting String应该小于numeric(n / a,0,1,2,5,100)

时间:2014-03-04 10:12:24

标签: javascript angularjs sorting

我在桌面上运行angularjs过滤器排序,

当我得到等于数字'n / a'的值时,例如排序不正确

字符串应小于数字我希望订单为n / a,0,1,2,5,1

但顺序为0,1,2,5,100,n / a不正确,

我还附上图片和分类代码,

如果您有任何想法如何解决,请

感谢。

这是js fiddle

的示例链接

http://jsfiddle.net/liad/3cunf/

示例代码为:

<div ng-click="orderByField='rating'; reverseSort = !reverseSort">

enter image description here

1 个答案:

答案 0 :(得分:0)

这解决了我的问题

 /*
 orderObjectBy - netural filter of string and numbers
 */
.filter('orderObjectBy', [function() {
    return function(items, field, reverse) {
        var filtered = [];
        angular.forEach(items, function(item) {
            filtered.push(item);
        });
        filtered.sort(function (a, b) {

            var result =  (a[field] - b[field]);
            if (isNaN(result)) {

                if (a[field] == 'n/a' && b[field] != 'n/a')
                {
                    return -1;
                }
                else if (a[field] != 'n/a' && b[field] == 'n/a')
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
            return result;


        });
        if(reverse) filtered.reverse();
        return filtered;
    };
}]