我想循环遍历每个数组成员,以检查该成员是否处于“Admin”角色,然后使用“push”将其添加到新数组中。
该 过滤 , 地图 函数返回新数组,因此您不需要自己创建新数组。如果需要循环遍历数组,请使用 forEach 代替
forEach
未捕获的TypeError:无法读取未定义的属性“map”
请显示您设置的代码 this.menu
this.menu
console.log(this.menu.map(r => r.filter(f => f.settings.roles === userRole)));
map , filter , reduce 只能与数组一起使用。上面的代码显示您使用 filter 反对 r 一个对象(如 menu 是一个对象数组)
map
filter
reduce
r
menu
f.settings.roles === userRole :userRole是字符串,但settings.roles是数组,因此您必须使用 includes (要么 indexOf )用作过滤条件
f.settings.roles === userRole
includes
indexOf
由于您只想过滤满足条件的项目,请使用 filter 这就足够了
menu.filter(r => r.settings.roles && r.settings.roles.includes('Admin'))