Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs orderby 按数字作为字符串排序-AngularJS_Angularjs Orderby - Fatal编程技术网

Angularjs orderby 按数字作为字符串排序-AngularJS

Angularjs orderby 按数字作为字符串排序-AngularJS,angularjs-orderby,Angularjs Orderby,我想按“数字”对表格进行排序。这些“数字”表示应用程序的版本号或这些应用程序的依赖项。它们看起来像“2.11.7”或“6.41.6”。因此,我无法将它们转换为数字。但当像处理字符串一样处理它们时,angulars orderBy对它们的排序不正确。更具体地说: 2.11.5 2.11.5 2.11.7 2.11.7 2.11.5 将以(描述)结束 2.11.7 2.11.7 2.11.5 2.11.5 2.11.7 或(ASC) 2.11.7 2.11.5 2.11.7 2.11.7

我想按“数字”对表格进行排序。这些“数字”表示应用程序的版本号或这些应用程序的依赖项。它们看起来像“2.11.7”或“6.41.6”。因此,我无法将它们转换为数字。但当像处理字符串一样处理它们时,angulars orderBy对它们的排序不正确。更具体地说:

  • 2.11.5
  • 2.11.5
  • 2.11.7
  • 2.11.7
  • 2.11.5
将以(描述)结束

  • 2.11.7
  • 2.11.7
  • 2.11.5
  • 2.11.5
  • 2.11.7
或(ASC)

  • 2.11.7
  • 2.11.5
  • 2.11.7
  • 2.11.7
  • 2.11.5

现在我被卡住了。知道如何解决这个问题吗?

排序可以通过普通javascript完成。下面是一个改编自的用于版本排序的示例

就AngularJs而言,应提供。这里有一个示例,其中有一个自定义比较器来对值进行排序。它所需要的只是使用类似于上面的函数(或您自己的逻辑)来提供自定义比较器。通过传递真/假,可以通过表达式本身提供排序方向的标志

下面是一个根据自己的示例编辑的示例,用于提供您的值。随便玩玩吧。此示例将在中正常运行。此处列出的代码用于文档

(function(angular) {
    'use strict';
    angular.module('orderByExample4', [])
        .controller('ExampleController', ['$scope', function($scope) {
            $scope.friends = [
                { name: 'John', favoriteLetter: '2.11.5' },
                { name: 'Mary', favoriteLetter: '2.11.5' },
                { name: 'Mike', favoriteLetter: '2.11.7' },
                { name: 'Adam', favoriteLetter: '2.11.7' },
                { name: 'Julie', favoriteLetter: '2.11.5' }
    ];

            function pad(version) {
                var paddingString = "0000000000";
                return version
                    .split('.')
                    .map(function(majorMinorVersion) {
                        var index = paddingString.length - majorMinorVersion.length;
                        return paddingString.substr(0, index) + majorMinorVersion;
                    })
                    .join('.');
            }

            $scope.localeSensitiveComparator = function(v1, v2) {
                // If we don't get strings, just compare by index
                if (v1.type !== 'string' || v2.type !== 'string') {
                    return (v1.index < v2.index) ? -1 : 1;
                }

                var a = pad(v1.value);
                var b = pad(v2.value);
                return a.localeCompare(b);
            };
  }]);
})(window.angular);
(函数(角度){
"严格使用",;
angular.module('orderByExample4',[])
.controller('ExampleController',['$scope',function$scope){
$scope.friends=[
{姓名:'John',收藏夹字母:'2.11.5'},
{姓名:'Mary',收藏夹字母:'2.11.5'},
{姓名:'Mike',收藏夹字母:'2.11.7'},
{name:'Adam',favoriteLetter:'2.11.7'},
{姓名:'Julie',收藏夹字母:'2.11.5'}
];
功能板(版本){
var paddingString=“0000000000”;
返回版本
.split(“.”)
.map(功能(主版本){
var索引=paddingString.length-majorMinorVersion.length;
返回paddingString.substr(0,索引)+majorminoversion;
})
。加入(‘.);
}
$scope.localeSensitiveComparator=函数(v1、v2){
//如果我们没有得到字符串,只需按索引进行比较
如果(v1.type!='string'| | v2.type!=='string'){
回报率(v1.index