这是我的数据数组:
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
}
]
Run Code Online (Sandbox Code Playgroud)
我想通过另一个数组来匹配数组元素,例如:
let match= [1022692502, 1012182502]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,预期结果是:
[
{
"fineAmount": 20
},
{
"fineAmount": 0
}
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
使用Array#filter方法过滤掉需要的值,然后使用Array#map方法格式化数组元素。
var res = myvalue
// filter out elements
.filter(({ feeSubHeadId }) => match.includes(feeSubHeadId))
// format array elements
.map(({ fineAmount }) => ({ fineAmount }));
Run Code Online (Sandbox Code Playgroud)
var res = myvalue
// filter out elements
.filter(({ feeSubHeadId }) => match.includes(feeSubHeadId))
// format array elements
.map(({ fineAmount }) => ({ fineAmount }));
Run Code Online (Sandbox Code Playgroud)
或者通过Array#reduce方法可以将两者结合起来。
var res = myvalue
// iterate and push into array if id found
.reduce((arr, { feeSubHeadId,fineAmount }) => {
if (match.includes(feeSubHeadId)) arr.push({ fineAmount: fineAmount });
// return array reference for next iteration
return arr;
// set intial value as empty array for result
}, []);
Run Code Online (Sandbox Code Playgroud)
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]
var res = myvalue
.filter(({ feeSubHeadId }) => match.includes(feeSubHeadId))
.map(({ fineAmount }) => ({ fineAmount }));
console.log(res);Run Code Online (Sandbox Code Playgroud)
为了提取对象属性,我使用了 ES6解构赋值功能。