使用Math.random()与Math.floor()随机弹出列表元素:仅弹出baby[1]异常
问题原因
JavaScript 的 pop() 方法不支持传入参数,它的功能是固定删除数组的最后一个元素。所以不管你写 baby.pop(0) 还是 baby.pop(1),最终都会删掉数组的最后一项(也就是索引为1的"tae"),这就是为什么你的代码只会弹出baby[1]。
解决方案
要随机删除数组中指定索引的元素,应该使用 splice() 方法,它可以指定要删除的元素索引和删除数量。
修正后的代码:
<body> <h1 id="1">bebe</h1> <h1 id="2">tae</h1> <script> var baby = [document.getElementById('1').innerText, document.getElementById('2').innerText] // 生成0到数组长度-1的随机索引 const randomIndex = Math.floor(Math.random() * baby.length) // 删除指定索引的1个元素 baby.splice(randomIndex, 1) console.log(baby) </script> </body>
补充说明
splice(index, count):第一个参数是要操作的数组索引,第二个参数是要删除的元素数量- 如果你想获取被删除的元素,可以把
splice的返回值存起来,比如const removedItem = baby.splice(randomIndex, 1)[0]
内容的提问来源于stack exchange,提问作者Ame Suzuki
相关产品推荐
相关产品推荐

