gpt4 book ai didi

javascript - Angular js 中的自定义排序

转载 作者:行者123 更新时间:2023-11-28 12:18:25 25 4
gpt4 key购买 nike

得到这个数组:

$scope.items = [
{
itemId: "1.1.1"
},
{
itemId: "1.1.10"
},
{
itemId: "1.1.2"
},

]

我想按点分隔的每个数字对其进行排序。

所以预期的输出是:

$scope.items = [
{
itemId: "1.1.1"
},
{
itemId: "1.1.2"
},
{
itemId: "1.1.10"
}
]

这可以用默认的 Angular js orderBy 来实现吗?

Link to Fiddle

最佳答案

您可以使用Array.prototype.sort

排序函数使用 unicode 代码点对数组进行排序,但您可以传递自己的自定义比较函数来满足您的排序需求,自定义比较函数接受两个值并比较它们,然后根据返回的值放置它们。

   $scope.items.sort(
function(a,b){

/*creates an integer array
of all numbers in the dot separated string.*/

let a_array = a.split('.').map(v => parseInt(v));
let b_array = b.split('.').map(v => parseInt(v));

/*sorts for each digit,
move to next digit
if and only if the current digits are not equal*/
if(a_array[0] != b_array[0])
return a_array[0] - b_array[0];

if(a_array[1] != b_array[1])
return a_array[1] - b_array[1];

if(a_array[2] != b_array[2])
return a_array[2] - b_array[2];
});

如果要反转排序方向,只需将每个return语句中a_array和b_Array的位置反转即可。

关于javascript - Angular js 中的自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44072621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com