我的状态上有以下变量:
Category Email_x Email SamAccountName
-------- ------- ----- --------------
category1 email.1 sample@gmail.com
category2 email.3 sample2@gmail.com
category3 email.2 sample3@gmail.com
category3 email.4 sample44@hotmail.com
category3 email.6 sample55@gmail.com
我想做的是删除同一列表中的某个项目,为此我编写了此方法:
this.state = {
playerList: {
player: [
{
playerAlias: [
{
name: null
}
],
idPlayer: null,
playerName: null,
broadcastChannel: null,
clusterName: null
}
]
}
}
尽管这可以工作,但不起作用,但尝试在render方法上迭代变量的所有元素时,会出现以下错误:
尝试循环执行此操作时无法读取未定义的映射this.state.playerList.player.map((player)
答案 0 :(得分:4)
几件事:
Array#map
旨在使用修改后的值创建一个新数组。 Array#forEach
是在这种情况下使用的适当方法。但是在这种情况下,您不应使用任何一种,因为:Array#filter
。您可以将filter
视为具有完全相反逻辑的相同操作:仅在playerAux != player
const newList = this.state.playerList.player.filter((playerAux) => {
return playerAux != player
})
this.setState({ playerList:newList })
编辑:查看完逻辑顺序后,情况非常糟糕。请记住playerAux
是什么。实际上是对象本身:
{
{
playerAlias: [
{
name: null
}
],
idPlayer: null,
playerName: null,
broadcastChannel: null,
clusterName: null
}
我不知道您要比较什么,但是可能是playerName
,应该是playerAux.playerName != player