React/JavaScript练习:数组splice方法末尾[0]的作用疑问
理解
let randPokemon = hand2.splice(randIndex, 1)[0];中的[0] 嘿,这个问题抓得特别准!我来给你把这个[0]的作用讲得明明白白~
你已经搞懂了splice()的参数规则,那咱们重点聊它的返回值:splice()执行删除操作后,会返回一个包含所有被删除元素的数组——哪怕你只删除了1个元素,它也会把这个元素放进数组里返回给你。
回到你的代码:
let randPokemon = hand2.splice(randIndex, 1)[0];
这里hand2.splice(randIndex, 1)的作用是从hand2里删掉指定索引的1只宝可梦,它返回的结果是类似这样的数组:
[{ id: 4, name: "Charmander", type: "fire", experience: 62 }]
而你需要的是单个的宝可梦对象,不是装着对象的数组。所以末尾的[0]就是用来从这个返回的数组里取出第一个(也是唯一一个)元素,把它赋值给randPokemon。
如果去掉[0]会怎么样?那randPokemon就会变成上面那个长度为1的数组,之后执行hand1.push(randPokemon)时,你就会把一个数组塞进hand1里,最终hand1会变成「数组套数组」的结构(比如[[{...}], [{...}]]),这显然不符合你“给玩家分配单张卡牌”的需求,后续如果把hand1传给Pokedex组件,肯定会因为数据格式不对出问题。
简单总结:
splice(...)返回被删元素组成的数组[0]取出数组里的唯一元素,得到单个宝可梦对象,让后续的push操作符合预期
内容的提问来源于stack exchange,提问作者Perdixo
相关产品推荐
相关产品推荐

