开发者问题收集

JavaScript 中的数组未定义

2022-05-20
74

我对 JavaScript 还很陌生,但对 C 和 Java 有丰富的经验。无论出于什么原因,下面的代码都不会用未定义以外的值填充数组。我只是想用一组随机数字填充一个数组,用于二十一点游戏

let randomSuite;
let randomNum
let count = 0;
var cards = new Array(56);
window.onload = function main(){
const suites = [
    "H",
    "D",
    "S",
    "C"
];

for(let i = 0 ; i < 56 ; i++){
    randomNum = (Math.random * 12) + 1;
    randomSuite = Math.random * 3;
    cards.push = randomNum;
    console.log(cards[i]);
    count++;
}
alert(cards[1]);
}
function hitFunc(){
    alert("works " + cards[0]);
}
*{
    margin: 0;
    padding : 0;
    font-family: sans-serif;
}

.main{
    width: 100%;
    height: 100vh;
    background-color:black;
}

.img1{
    position: relative;
    z-index: -1;
    margin: 10px auto 20px;
    display: block;
    width: 75%;
    height: 75%;
}

.img2{
    position: relative;
    z-index: 1;
    margin: 10px auto 20px;
    display: block;
    bottom: 200px;
    right: 400px;
    width: 7%;
    height: 7%;
}

.hitButton {
z-index: 1;
position: relative;
text-align: center;
left: 225px;
bottom: 550px;
}

.center {
    display: block;
    margin-left: auto;
    margin-right: auto;
    width: 50%;
    color: aliceblue;
    object-position: center;
  }

这是我所拥有的。警报用于显示该功能正在完成。任何帮助都值得赞赏,请也留下解释。这是我在 stack overflow 上的第一篇帖子,如果有任何方法可以提高我帖子的质量,请告诉我。

2个回答
  1. Math.random 是一个函数;使用 Math.random()
  2. 对于 push 也一样,使用 cards.push(randomNum)
  3. 您正在定义一个包含 56 个点的数组 new array(56) ,但由于您使用的是 push ,因此您需要创建一个空数组,以便将其推到所需的索引。否则,不要使用 push ,而只需将其设置在索引上: cards[i] = randomNum
  4. 不需要 count 变量,因为循环迭代器 ( i ) 具有相同的值
let randomSuite;
let randomNum
var cards = new Array();

window.onload = function main(){
    const suites = [
        "H",
        "D",
        "S",
        "C"
    ];

    for(let i = 0 ; i < 56 ; i++){
        randomNum = (Math.random() * 12) + 1;
        randomSuite = Math.random() * 3;
        cards.push(randomNum);
    }
    console.log(cards)
}
*{
    margin: 0;
    padding : 0;
    font-family: sans-serif;
}

.main{
    width: 100%;
    height: 100vh;
    background-color:black;
}

.img1{
    position: relative;
    z-index: -1;
    margin: 10px auto 20px;
    display: block;
    width: 75%;
    height: 75%;
}

.img2{
    position: relative;
    z-index: 1;
    margin: 10px auto 20px;
    display: block;
    bottom: 200px;
    right: 400px;
    width: 7%;
    height: 7%;
}

.hitButton {
z-index: 1;
position: relative;
text-align: center;
left: 225px;
bottom: 550px;
}

.center {
    display: block;
    margin-left: auto;
    margin-right: auto;
    width: 50%;
    color: aliceblue;
    object-position: center;
  }
0stone0
2022-05-20

使用括号调用函数

Math.random()push() 是函数而非变量,因此您需要使用 () 调用它们。

push() 将附加到数组

const array = new Array(10);

for(let i = 0; i < 10; i++){
  array.push(i);
}
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

解决方案

您应该改用 array[i] = value; 在给定位置设置值。

const array = new Array(10);

for(let i = 0; i < 10; i++){
  array[i] = i;
}
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

如果您想要一种更实用的方法来实现这一点,就像 JavaScript 的典型做法一样,您可以使用 map() :

const array = [...new Array(10)].map((_, index) => index);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Mushroomator
2022-05-20