You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:10:43