对 Angular 中的 JSON 响应数据进行排序 8
Sorting a JSON response data in Angular 8
我必须根据批准状态对响应 JSON 数据进行排序。响应数据是这样的;
[0]:
adjustmnetfileds:阵列(2)
[0]: 一些数据
[2]: 一些数据
调整:数组(1)
0:
approvedByName:'Jack'
任务名称:'Insurance'
批准状态:1
[2]:
adjustmnetfileds:阵列(2)
[0]: 一些数据
[2]: 一些数据
调整:数组(1)
0:
approvedByName:'Dan'
任务名称:'Insurance-Test'
批准状态:2
JSON 响应是这样的(嵌套数组),我想根据“approvedStatus(asc 或 desc)对响应进行排序。
附上快照以供参考。
已回答here
您可以使用Array.sort()
示例:
function compare(a, b) {
if (a.approvedStatus < b.approvedStatus) {
return -1;
}
if (a.approvedStatus > b.approvedStatus) {
return 1;
}
return 0;
}
let data: Array<{ field: any, approvedStatus: number }> = [{ field: {}, approvedStatus: 2 }, { field: {}, approvedStatus: 1 }]
data.sort(compare);
您可以通过提供自定义 compareFn 来使用数组 sort() 方法。
const json = [
{
adjustmnetfileds: [
'some data',
'some data',
],
adjustments: [
{
approvedByName: 'Jack',
taskName: 'Insurance',
approvedStatus: 1,
}
]
},
{
adjustmnetfileds: [
'some data',
'some data',
],
adjustments: [
{
approvedByName: 'Dan',
taskName: 'Insurance-Test',
approvedStatus: 3,
}
]
},
{
adjustmnetfileds: [
'some data',
'some data',
],
adjustments: [
{
approvedByName: 'Sam',
taskName: 'Insurance-Test',
approvedStatus: 2,
}
]
},
]
// This sorts into ASC order
json.sort((a, b) => a.adjustments[0].approvedStatus - b.adjustments[0].approvedStatus);
// For sorting into DESC order
// json.sort((a, b) => b.adjustments[0].approvedStatus - a.adjustments[0].approvedStatus);
console.log(json);
我希望,你的 JSON 结构是正确的。
Note that the array is sorted in place, and no copy is made.
如果你想要新的数组,那么先复制然后在上面应用排序。
const originalArr = [1, 2, 3]
const copied = [...originalArr]
我必须根据批准状态对响应 JSON 数据进行排序。响应数据是这样的; [0]: adjustmnetfileds:阵列(2) [0]: 一些数据 [2]: 一些数据
调整:数组(1) 0: approvedByName:'Jack' 任务名称:'Insurance' 批准状态:1
[2]: adjustmnetfileds:阵列(2) [0]: 一些数据 [2]: 一些数据
调整:数组(1) 0: approvedByName:'Dan' 任务名称:'Insurance-Test' 批准状态:2
JSON 响应是这样的(嵌套数组),我想根据“approvedStatus(asc 或 desc)对响应进行排序。 附上快照以供参考。
已回答here
您可以使用Array.sort()
示例:
function compare(a, b) {
if (a.approvedStatus < b.approvedStatus) {
return -1;
}
if (a.approvedStatus > b.approvedStatus) {
return 1;
}
return 0;
}
let data: Array<{ field: any, approvedStatus: number }> = [{ field: {}, approvedStatus: 2 }, { field: {}, approvedStatus: 1 }]
data.sort(compare);
您可以通过提供自定义 compareFn 来使用数组 sort() 方法。
const json = [
{
adjustmnetfileds: [
'some data',
'some data',
],
adjustments: [
{
approvedByName: 'Jack',
taskName: 'Insurance',
approvedStatus: 1,
}
]
},
{
adjustmnetfileds: [
'some data',
'some data',
],
adjustments: [
{
approvedByName: 'Dan',
taskName: 'Insurance-Test',
approvedStatus: 3,
}
]
},
{
adjustmnetfileds: [
'some data',
'some data',
],
adjustments: [
{
approvedByName: 'Sam',
taskName: 'Insurance-Test',
approvedStatus: 2,
}
]
},
]
// This sorts into ASC order
json.sort((a, b) => a.adjustments[0].approvedStatus - b.adjustments[0].approvedStatus);
// For sorting into DESC order
// json.sort((a, b) => b.adjustments[0].approvedStatus - a.adjustments[0].approvedStatus);
console.log(json);
我希望,你的 JSON 结构是正确的。
Note that the array is sorted in place, and no copy is made.
如果你想要新的数组,那么先复制然后在上面应用排序。
const originalArr = [1, 2, 3]
const copied = [...originalArr]