【发布时间】:2020-09-10 16:04:22
【问题描述】:
我有一个数据项列表,每个数据项包含来自同一属性的许多不同嵌套属性值之一,例如 A 或 B,例如employeeType。我需要创建一个只包含 employee.employeeType 的值等于 "B" 的对象的新数组。
const data = [{
"id": 80,
"employee": {
"employeeType":"A"
}
}, {
"id": 250,
"employee": {
"employeeType" :"B"
}
}, {
"id": 263,
"employee": {
"employeeType" :"A"
}
}, {
"id": 267,
"employee": {
"employeeType" :"A"
}
}, {
"id": 272,
"employee": {
"employeeType" :"A"
}
}, {
"id": 281,
"employee": {
"employeeType" :"B"
}
}];
预期输出
[{
"id": 250,
"employee": {
"employeeType" :"B"
}
}, {
"id": 281,
"employee": {
"employeeType" :"B"
}
}]
我试过这个,但得到一个错误 filter of undefined
const updatedData = data.map((element) => {
return {...element, subElements: element.subElements.filter((subElement) =>
subElement.employeeType === "B")}
})
【问题讨论】:
-
element.subElements应该是什么?您的对象中没有subElements属性。 -
在这里努力遵循您的逻辑。你有一个对象数组,而不是一个对象。如果要创建数组的深层副本,为什么不直接过滤并映射数组?如果您真的只想要一次迭代,请使用 reduce?
-
由于您没有更改任何列表项的结构,因此不需要
map,从您的预期结果来看,您显然想要filter。 -
如果
subElements是包含字符串employee的变量,请参见stackoverflow.com/questions/4244896/… -
应该是
employees我错过了在问题中更改它
标签: javascript arrays filter