【问题标题】:From an array of objects, extract value of properties for each object and put in a different array从对象数组中提取每个对象的属性值并放入不同的数组中
【发布时间】:2019-05-02 00:19:22
【问题描述】:

我有一组过滤器,它是一个响应式表单对象。我已获取对象的属性 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 ),主要区别在于我试图为每个对象创建一个数组。

每个对象代表我试图动态过滤的表中的一行。所以我不能将来自不同行的值放入一个数组中。

【问题讨论】:

  • 预期结果是什么?
  • 是的,很高兴看到所需输出的示例
  • 我希望每一行的值都在它自己的数组中。所以我可以根据 filterArr 过滤每一行。像 claimArr[1]=[141.78, 6596594-0, "University Hospital", etc], claimArr[2]=[341.70, 2196524-3, "Springfield Hospital", etc],
  • 我相信我需要使用 for 循环。 for( var i = 0; i

标签: javascript arrays typescript filter javascript-objects


【解决方案1】:

根据你想要的结果,我认为你可以使用 ES6 函数。

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

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

【讨论】:

  • 是的,这与我放入 cmets 的 for 循环一起工作,谢谢。您知道如何更进一步并通过claimArr过滤filterArr吗?
  • 你的意思是对于filterArr中的每个“Approved”元素,我们都应该提取对应索引的claimArr元素吗?如果我错了,请澄清简单的例子。
  • 我们不需要提取它,只需标记它。也适用于患者、索赔编号或服务日期的任何值。我正在构建一个动态过滤器,因此我试图匹配任何其他数组中第一个数组的值。如果有匹配项,我想标记它并更新视图以仅显示这些数组。
  • 请展示一些所需结果的快速示例。 “标记”他们是什么意思?
  • tablefilter.com/case-sensitive.html 请查看此网址。我的第一个数组是顶部的过滤器。下面的每一行都在一个数组中。当我键入内容并按 Enter 时,如果我在过滤器中键入的文本与返回的行项目中的任何文本匹配。清楚吗?
【解决方案2】:

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

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

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

This article 对此进行了讨论并添加了更多内容。

【讨论】:

  • 我正在过滤一个表。我有一个工作版本,但我需要它是动态的,因为我有几个具有不同过滤器选项的表。 FilterArr 是过滤器的值。 ClaimArr 是表行的值。我想通过 FilterArr 过滤 ClaimArr 并返回匹配的行。
猜你喜欢
  • 2019-09-02
  • 2022-01-10
相关资源
最近更新 更多