gpt4 book ai didi

arrays - 过滤器以在 Angular js 中对 JSON 数据进行排序

转载 作者:行者123 更新时间:2023-12-02 01:23:26 26 4
gpt4 key购买 nike

我是 Angular JS 的新手,并且对过滤器在 Angular JS 中的工作原理有基本的了解。我一直坚持对我的 JSON 数据数组进行排序,因为有各种参数需要对其进行排序。

我的 JSON 数组采用以下格式:

[
{
type:0,
emp_name:"xyz",
connected_on:"9876543210"
},
{
type:1,
emp_name:"",
connected_on:"9876543210"
},
{
type:1,
emp_name:"abcd",
connected_on:"9876543210"
},
{
type:0,
emp_name:"pqr",
connected_on:"9876543210"
}
]

同一数组的其他组合可以是:

[
{
type:0,
emp_name:"",
connected_on:"9876543210"
},
{
type:1,
emp_name:"xyz",
connected_on:"9876543210"
},
{
type:0,
emp_name:"abcd",
connected_on:"9876543210"
}
]

每个数组都会有一个对象,其中 type:1 会在那里,并且排序后它必须始终是第一个元素。

之后,排序后的数组应该包含 emp_name:"" 所在的所有元素。

排序数组的最后,它应该包含根据emp_name:“无论名称”排序的所有剩余元素

所以结果应该如下所示:

[
{
type:1,
emp_name:"xyz",
connected_on:"9876543210"
},
{
type:0,
emp_name:"",
connected_on:"9876543210"
},
{
type:0,
emp_name:"abcd",
connected_on:"9876543210"
}
]

任何人都可以帮我编写过滤器以获得所需的结果。提前致谢。如果需要任何其他信息,请告诉我。

connected_on也是唯一的值,所以我使用track by JSONarr.connected_on

最佳答案

排序函数期望 -10-1 作为结果。 -1 表示之前,0 表示没有变化,1 表示之后。

现在您必须根据 2 个参数进行排序,因此最好有一个算术值。根据优先级具有更高的值(value)。所以在下面的情况下,我们必须先根据type排序,然后根据emp_name排序。

要按升序排序,请返回 1(表示较大)和 -1(表示较小)。对于降序反转的值。现在将这两个键组合起来,您将得到如下所示的结果:

var data=[{type:0,emp_name:"xyz",connected_on:"9876543210"},{type:1,emp_name:"",connected_on:"9876543210"},{type:1,emp_name:"abcd",connected_on:"9876543210"},{type:0,emp_name:"pqr",connected_on:"9876543210"}];

data.sort(function(a, b) {
var _a = a.type > b.type ? -10 : a.type < b.type ? 10 : 0;
var _b = a.emp_name > b.emp_name ? 1 : a.emp_name < b.emp_name ? -1 : 0;
return _a + _b;
});
console.log(data)

关于arrays - 过滤器以在 Angular js 中对 JSON 数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075944/

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