如何停止在Javascript中返回-0?

问题描述 投票:0回答:1

我创建了一个事件监听器,其中有一个按钮,有一个代码onclick,但有时当我一次又一次地点击按钮时,它返回undefined,我设置它从一个数组中返回随机的东西。总之,我发现自从我把 array.length -1 放在控制台后,它有时会返回 -0 或 undefined,而不是只返回 0。我有什么办法可以解决这个问题?

这是我的代码,按钮监听器在main.js文件中。

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body>
    <div class="root">
        <div>
            <button id="btn1">sleep</button>
        </div>
    </div>

    <script type="module" src="main.js"></script>
</body>
</html>

main.js

import { v1, v2, v3 ,v4 } from './main2.js';


let btn = document.getElementById('btn1');

console.log(v3);
/////////////////////////////////////////////////



btn.addEventListener('click', () => {
    console.log(`${v4[Math.round(Math.random() * v4.length -1
      )]}`)
})

main2.js


let log = {
    One: 'one',
    Two: 'two',
    Three: 'three',
    Four: ['tester1', 'tester2', 'tester3'],
}

export let {One: v1, Two: v2, Three: v3, Four: v4} = log;

javascript arrays object destructuring
1个回答
0
投票
console.log(`${v4[Math.round(Math.random() * v4.length -1)]}`);

在-1和3之间选择一个数字是

应该是这样

console.log(`${v4[Math.random() * v4.length | 0]}`);

其中选择一个0和3之间的数字。Math.random() 返回0和0.999999999999999999999之间的数字,所以 Math.random() * v4.length 将返回一个介于0和3.9999999999999999999999之间的数字。

然后 | 0 会把结果变成一个整数。

| 0Math.floor 和更多的成语。见 使用位式OR 0对一个数字进行置底

© www.soinside.com 2019 - 2024. All rights reserved.