按数字字段按降序或升序对数组Angular 7进行排序

时间:2019-03-29 11:00:22

标签: arrays angular sorting rxjs angular7

我需要帮助, 我需要按PendingQuantity字段对数组进行排序。我有负数和正数。 所以我的代码:

this.data.Products.sort(obj => obj.PendingQuantity);

所以我的数组

"Products": [
            {
                "ProductCode": "MC30180",
                "Description": "Description_1",
                "NationalCode": "N.C. 0965",
                "PendingQuantity": 20,
                "toBeScanned": true
            },
            {
                "ProductCode": "Name_2",
                "Description": "Description_2",
                "NationalCode": "N.C. 0382",
                "PendingQuantity": -3,
                "toBeScanned": false
            },
            {
                "ProductCode": "Name_3",
                "Description": "Description_3",
                "NationalCode": "N.C. 8913",
                "PendingQuantity": 25,
                "toBeScanned": false
            }
        ]

我想要的顺序是:

"Products": [
                {
                    "ProductCode": "MC30180",
                    "Description": "Description_1",
                    "NationalCode": "N.C. 0965",
                    "PendingQuantity": -3,
                    "toBeScanned": true
                },
                {
                    "ProductCode": "Name_2",
                    "Description": "Description_2",
                    "NationalCode": "N.C. 0382",
                    "PendingQuantity": 25,
                    "toBeScanned": false
                },
                {
                    "ProductCode": "Name_3",
                    "Description": "Description_3",
                    "NationalCode": "N.C. 8913",
                    "PendingQuantity": 20,
                    "toBeScanned": false
                }
            ]

2 个答案:

答案 0 :(得分:3)

您可以将此命令用于asc product = product.sort((a, b) => a.PendingQuantity - b.PendingQuantity);

如果要按desc订购,请使用product = product.sort((a, b) => b.PendingQuantity - a.PendingQuantity);

更新:

如果显示自定义顺序(例如-3、25、20),则可以处理排序条件。

product = product.sort((a, b) => { if (a.PendingQuantity < 0) {return -1; } if (b.PendingQuantity <0 ) {return 1;} return b.PendingQuantity - a.PendingQuantity });

let product = [
            {
                "ProductCode": "MC30180",
                "Description": "Description_1",
                "NationalCode": "N.C. 0965",
                "PendingQuantity": 20,
                "toBeScanned": true
            },
            {
                "ProductCode": "Name_2",
                "Description": "Description_2",
                "NationalCode": "N.C. 0382",
                "PendingQuantity": -3,
                "toBeScanned": false
            },
            {
                "ProductCode": "Name_3",
                "Description": "Description_3",
                "NationalCode": "N.C. 8913",
                "PendingQuantity": 25,
                "toBeScanned": false
            }
        ];
        
        
product = product.sort((a, b) => a.PendingQuantity - b.PendingQuantity);
product = product.sort((a, b) => { if (a.PendingQuantity < 0) {return -1; } if (b.PendingQuantity <0 ) {return 1;} return b.PendingQuantity - a.PendingQuantity });

console.log(product);

答案 1 :(得分:2)

您可以使用sort的{​​{1}}功能

Array