【发布时间】:2019-01-10 08:49:28
【问题描述】:
我有一个对象数组。每个对象都包含另一个数组。
如何通过嵌套aParticipants 数组的sFullName 的值过滤aParticipants 数组?
const filterString = '';
const aParticipants = [{
'iRoleId': 1,
'aParticipants': [{
'iId': 1,
'sFullName': 'Jimmy'
}]
},
{
'iRoleId': 2,
'aParticipants': [{
'iId': 2,
'sFullName': 'Tomas'
},
{
'iId': 3,
'sFullName': 'Stanley'
}
]
}
]
我已经尝试过这种方法:
const aFilteredParticipants = [...aParticipants].filter(employeeBlock => {
employeeBlock.aParticipants = employeeBlock.aParticipants.filter( item =>
{
return item.sFullName.toLowerCase().includes(filterString.toLowerCase());
});
return employeesBlock.aParticipants.length;
}
这里我根据过滤嵌套数组后剩下的长度过滤父数组。我通过检查来过滤嵌套数组,如果字段sFullName 包含filterString。
第一次过滤后输出正确。但是在第一次过滤嵌套数组aParticipants 在父数组aParticipants 的对象中之后,将它们的值更改为[] 空数组。
虽然我正在使用扩展运算符复制初始数组。
【问题讨论】:
-
是否要过滤数组而不影响原始数组?
-
@xwlee 是的,这就是重点
标签: javascript arrays