JavaScript 中的数组未定义

Array in JavaScript is undefined

我是 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;
  }

这是我的。警报用于显示功能正在完成。任何帮助表示赞赏请也留下解释。这是我的第一个 post 堆栈溢出 让我知道是否有提高我 post.

质量的方法
  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;
  }

调用带括号的函数

Math.random()push() 是函数而不是变量,因此您需要使用 ().

调用它们

push() 将附加到数组

push() 将向数组附加一个值。您已经用 10 个值初始化了一个数组。推送新值将增加数组大小,但不会在前 10 个位置添加值。

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; }