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.
质量的方法
Math.random
是一个函数;使用 Math.random()
- 与
push
相同,使用 cards.push(randomNum)
- 您正在定义一个包含 56 个点的数组
new array(56)
,但由于您使用的是 push
,因此您需要创建一个空数组,这样您才能找到所需的索引。否则,而不是 push
,只需将其设置在索引上:cards[i] = randomNum
- 不需要
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; }
我是 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.
质量的方法Math.random
是一个函数;使用Math.random()
- 与
push
相同,使用cards.push(randomNum)
- 您正在定义一个包含 56 个点的数组
new array(56)
,但由于您使用的是push
,因此您需要创建一个空数组,这样您才能找到所需的索引。否则,而不是push
,只需将其设置在索引上:cards[i] = randomNum
- 不需要
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; }