首页 > 解决方案 > 如何以角度获取/显示数组对象的总长度

问题描述

如何获取/显示角度的length总和PENDINGREJECTED

如果status === 'PENDING'否则 如果status === 'REJECTED

这是代码:

list.components.ts

const group: any = groupBy(params, 'status');

    Object.values(group).map((x: any) => {
      x.map((key: any) => {
        console.log(key);
      });

这是array

{
          "assetcode": "001", "assetname": "Machine Print", "assettype": "Type", "floorcode": "58",
          "linecode": "02", "rowNo": 0, "lastpmdate": "2019-12-02 08:00:00", "status": "PENDING"
        },
        {
          "assetcode": "002", "assetname": "Machine Print", "assettype": "Type", "floorcode": "58",
          "linecode": "02", "rowNo": 0, "lastpmdate": "2019-12-02 08:00:00", "status": "PENDING"
        },
        {
          "assetcode": "003", "assetname": "Machine Print-V2", "assettype": "Type", "floorcode": "58",
          "linecode": "03", "rowNo": 0, "lastpmdate": "2019-12-02 08:00:00", "status": "PENDING"
        },
        {
          "assetcode": "003", "assetname": "Machine Print-V2", "assettype": "Type", "floorcode": "58",
          "linecode": "03", "rowNo": 0, "lastpmdate": "2019-12-02 08:00:00", "status": "PENDING"
        },
        {
          "assetcode": "003", "assetname": "Machine Print-V2", "assettype": "Type", "floorcode": "58",
          "linecode": "03", "rowNo": 0, "lastpmdate": "2019-12-02 08:00:00", "status": "PENDING"
        },
        {
          "assetcode": "003", "assetname": "Machine Print-V2", "assettype": "Type", "floorcode": "58",
          "linecode": "03", "rowNo": 0, "lastpmdate": "2019-12-02 08:00:00", "status": "PENDING"
        },
        {
          "assetcode": "003", "assetname": "Machine Print-V2", "assettype": "Type", "floorcode": "58",
          "linecode": "03", "rowNo": 0, "lastpmdate": "2019-12-02 08:00:00", "status": "REJECTED"
        },
        {
          "assetcode": "003", "assetname": "Machine Print-V2", "assettype": "Type", "floorcode": "58",
          "linecode": "03", "rowNo": 0, "lastpmdate": "2019-12-04 08:00:00", "status": "REJECTED"
        },
        {
          "assetcode": "003", "assetname": "Machine Print-V2", "assettype": "Type", "floorcode": "58",
          "linecode": "03", "rowNo": 0, "lastpmdate": "2019-12-03 08:00:00", "status": "PENDING"
        },

这是group

{PENDING: Array(6), REJECTED: Array(1)}
PENDING: Array(6)
0: {assetcode: "001", assetname: "Machine Print", assettype: "Type", floorcode: "58", linecode: "02", …}
1: {assetcode: "002", assetname: "Machine Print", assettype: "Type", floorcode: "58", linecode: "02", …}
2: {assetcode: "003", assetname: "Machine Print-V2", assettype: "Type", floorcode: "58", linecode: "03", …}
3: {assetcode: "003", assetname: "Machine Print-V2", assettype: "Type", floorcode: "58", linecode: "03", …}
4: {assetcode: "003", assetname: "Machine Print-V2", assettype: "Type", floorcode: "58", linecode: "03", …}
5: {assetcode: "003", assetname: "Machine Print-V2", assettype: "Type", floorcode: "58", linecode: "03", …}
length: 6
REJECTED: Array(1)
0: {assetcode: "003", assetname: "Machine Print-V2", assettype: "Type", floorcode: "58", linecode: "03", …}
length: 1
{PENDING: Array(2)}
PENDING: Array(2)
0: {assetcode: "003", assetname: "Machine Print-V2", assettype: "Type", floorcode: "58", linecode: "03", …}
1: {assetcode: "003", assetname: "Machine Print-V2", assettype: "Type", floorcode: "58", linecode: "03", …}
length: 2;
{REJECTED: Array(1)}
REJECTED: Array(1)
0: {assetcode: "003", assetname: "Machine Print-V2", assettype: "Type", floorcode: "58", linecode: "03", …}
length: 1

安慰 在此处输入图像描述

length有for和for 10 _8PENDING2REJECTED

它应该是这样显示的

 if (key.status === 'PENDING') {
     /// the output should be 8
    } else if (key.status === 'REJECTED') {
 /// the output should be 2
}

标签: javascriptangulartypescript

解决方案


假设group您附有屏幕截图的数组:

const pending = group.filter(asset => asset.status === 'PENDING').length;
const rejected = group.filter(asset => asset.status === 'REJECTED').length;

filter按状态进行过滤,并length返回过滤项目的总数。

如果您有多个数组,您可以先将它们连接起来使用concat()以获得单个数组:

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var children = hege.concat(stale);

https://www.w3schools.com/jsref/jsref_concat_array.asp

笔记:

在您的原始代码中,您正在groupBy()使用两个键(待处理和拒绝)创建一个新对象,但您甚至不需要它,因为它filter会满足您的需求,并且使用 concat 您可以将多个数组合并为一个。


推荐阅读