Javascript AngularJs orderBy排序字符串应小于数字(n/a、0、1、2、5、100)

Javascript AngularJs orderBy排序字符串应小于数字(n/a、0、1、2、5、100),javascript,angularjs,sorting,Javascript,Angularjs,Sorting,我正在运行angularjs过滤器对表进行排序 例如,当我得到的值等于数字“n/a”时,排序不正确 字符串应小于数字,我希望顺序为n/a、0、1、2、5、100 但是顺序是0,1,2,5100,不正确 我还附上了一张图片和分类代码 如果你知道如何解决它,请做 谢谢 下面是链接到的示例 示例代码为: <div ng-click="orderByField='rating'; reverseSort = !reverseSort"> 这解决了我的问题 /* orderObjectB

我正在运行angularjs过滤器对表进行排序

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

字符串应小于数字,我希望顺序为n/a、0、1、2、5、100

但是顺序是0,1,2,5100,不正确

我还附上了一张图片和分类代码

如果你知道如何解决它,请做

谢谢

下面是链接到的示例

示例代码为:

<div ng-click="orderByField='rating'; reverseSort = !reverseSort">
这解决了我的问题

 /*
 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;
    };
}]

你说的不适用是什么意思????它是未定义的值吗?这只是一个JavaScript排序。默认情况下,如果数组的内容是混合的,JS将转换为字符串,然后进行排序。所以,在我看来这是正确的。您可能需要实现自己的排序。n/a是一个值,它不是未定义的,它是来自服务的字符串,r我不是自己实现的,我只是使用order by field orderByField我附带了js fiddle@davintryon。因此,当JS进行排序时,它将被排序到底部。n在1之后。我明白了好的,让我检查一下