对 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]