从对象数组中提取每个对象的属性值,然后放入另一个数组中

时间:2018-11-29 20:56:18

标签: javascript arrays typescript filter javascript-objects

我有一组过滤器,它是一个Reactive Forms对象。我已经获取了对象的属性 values 并将其推入数组。

// original filters object {claim_number: null, status: "Approved", patient: null, service_date: null}

let filterArr = []
Object.keys(this.filtersForm.value).forEach(filter => {
    filterArr.push(this.filtersForm.value[filter])
    // filterArr [null, “Approved, null, null]
})

我有一个表,该表由一系列对象组成,如下所示:

"claims":[  
        {  
            "billed_amount":141.78,
            "claim_number": "6596594-0",
            "location":"University Hospital",
            "member_id":"A1234567890",
            "status":{  
                "label":"Approved",
                "value": "Approved"
            }
        },
        {  
            "billed_amount":341.70,
            "claim_number": "2196524-3",
            "location":"Springfield Hospital",
            "member_id":"B1234567890",
            "status":{  
                "label":"Pending",
                "value":"Pending"
            }
        },
        {  
            "billed_amount":111.70,
            "claim_number": "1233514-5",
            "location":"Springfield Hospital",
            "member_id":"C1234567890",
            "status":{  
                "label":"Pending",
                "value":"Pending"
            }
        },
        {
            // ...etc
        }
    ]

我试图遍历每一行并将属性值放入一个数组中,每一行一个,以便可以针对filterArr对其进行过滤。我该怎么办?

我的问题类似于这篇文章(From an array of objects, extract value of a property as array ),主要区别在于我试图为每个对象创建一个数组。

每个对象代表我试图动态过滤的表中的一行。因此,我无法将来自不同行的值放入一个数组中。

2 个答案:

答案 0 :(得分:0)

根据您期望的结果,我认为您可以使用ES6函数。

const result = yourTable.map(element => Object.values(element));

使用map()函数,遍历所有元素,并从每个对象中提取其值。

答案 1 :(得分:0)

不确定要在输出中包含什么内容,但以下内容将循环遍历数组并将数组返回到过滤器函数

const output = claimTable["claims"].map((claim) => {
    return claim
}).filter((claim) => {
    return claim.billed_amount > 100
})

以上内容将遍历声明并“转换”为数组。过滤器将针对所有真实情况返回该索赔(在这种情况下,如果开票金额大于100)。

This article对此进行了介绍,并为其添加了更多内容。