首页 > 解决方案 > 来自多个数组值的 Javascript 匹配

问题描述

这是我的数据数组:

let myvalue= [
    {
        "feeSubHeadId": 1022692502,
        "feeSubHeadName": "Quiz-01",
        "fineAmount": 20
    },
    {
        "feeSubHeadId": 1012182502,
        "feeSubHeadName": "Half Yearly Exam",
        "fineAmount": 0
    },
    {
        "feeSubHeadId": 1022682502,
        "feeSubHeadName": "Quiz-02",
        "fineAmount": 0
    },
    {
        "feeSubHeadId": 1012192502,
        "feeSubHeadName": "Annual Exam",
        "fineAmount": 0
    }
]

我想用另一个数组匹配数组元素,例如:

let match= [1022692502, 1012182502]

在这种情况下,预期结果是:

[
    {
        "fineAmount": 20
    },
    {
        "fineAmount": 0
    }
]

我怎样才能做到这一点?

标签: javascript

解决方案


Array.filter您应该尝试使用&来执行此操作Array.map。将Array.filter测试 是否feeSubHeadId包含在match.

然后,您可以继续提取fineAmount.Array.map

let myvalue= [
    {
        "feeSubHeadId": 1022692502,
        "feeSubHeadName": "Quiz-01",
        "fineAmount": 20
    },
    {
        "feeSubHeadId": 1012182502,
        "feeSubHeadName": "Half Yearly Exam",
        "fineAmount": 0
    },
    {
        "feeSubHeadId": 1022682502,
        "feeSubHeadName": "Quiz-02",
        "fineAmount": 0
    },
    {
        "feeSubHeadId": 1012192502,
        "feeSubHeadName": "Annual Exam",
        "fineAmount": 0
    }
];
let match= [1022692502, 1012182502];
const matchedItems = myvalue.filter(({feeSubHeadId}) => match.includes(feeSubHeadId)).map(({fineAmount})=> ({fineAmount}));
console.log(matchedItems);

我们也可以使用Array.from,第一个参数是过滤后的数组,第二个参数将其映射到新对象:

let myvalue= [
    {
        "feeSubHeadId": 1022692502,
        "feeSubHeadName": "Quiz-01",
        "fineAmount": 20
    },
    {
        "feeSubHeadId": 1012182502,
        "feeSubHeadName": "Half Yearly Exam",
        "fineAmount": 0
    },
    {
        "feeSubHeadId": 1022682502,
        "feeSubHeadName": "Quiz-02",
        "fineAmount": 0
    },
    {
        "feeSubHeadId": 1012192502,
        "feeSubHeadName": "Annual Exam",
        "fineAmount": 0
    }
];
let match= [1022692502, 1012182502];
const matchedItems = Array.from(myvalue.filter(({feeSubHeadId}) => match.includes(feeSubHeadId)),
                    ({fineAmount}) => ({fineAmount}));
console.log(matchedItems);


推荐阅读