679 字
3 分钟
JavaScript 数组,二维数组与对象
2026-05-27
无标签

相比其他的知识点,这个还是有点忘记了,甚至C语言上的写法也忘的差不多了。

数组#

这个绝对忘不了,这个也是C上面最基本的存储单位,写法也和JavaScript上差不多

var arr = [1, 2, 3]

根据这个做了这样的一个小球跑动的项目

<!doctype html>
<html>
<head>
<title></title>
</head>
<body>
<script src="./p5.min.js"></script>
<script>
let num = 5;
let xPos = [];
let yPos = [];
let radius = [];
let speedx = [];
let speedy = [];
function setup() {
createCanvas(800, 600);
background("blue");
for (let i = 0; i < num; i++) {
xPos[i] = random(800);
yPos[i] = random(600);
radius[i] = random(20, 50);
speedx[i] = random(-8, 8);
speedy[i] = random(-8, 8);
}
}
function draw() {
background("blue");
fill("pink");
noStroke();
for (let i = 0; i < num; i++) {
circle(xPos[i], yPos[i], radius[i] * 2);
xPos[i] += speedx[i];
yPos[i] += speedy[i];
if (xPos[i] < radius[i] || xPos[i] > 800 - radius[i]) {
speedx[i] = -speedx[i];
}
if (yPos[i] < radius[i] || yPos[i] > 600 - radius[i]) {
speedy[i] = -speedy[i];
}
}
}
</script>
</body>
</html>

二维数组#

这个在C语言里面写法是这样的

int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
printf("%d", arr[1][1]);

JavaScript不知道能不能说理解上会更简单

var arr = {
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
};
console.log(arr[1][1]);

将刚刚的这个项目写成二维数组的形式

<!doctype html>
<html>
<head>
<title></title>
</head>
<body>
<script src="./p5.min.js"></script>
<script>
let num = 5;
// 二维数组:[x, y, radius, speedX, speedY]
let balls = [];
function setup() {
createCanvas(800, 600);
background("blue");
balls = Array.from({ length: num }, () => [
random(800), // [i][0] - x
random(600), // [i][1] - y
random(20, 50), // [i][2] - radius
random(-8, 8), // [i][3] - speedX
random(-8, 8), // [i][4] - speedY
]);
}
function draw() {
background("blue");
fill("pink");
noStroke();
for (let i = 0; i < num; i++) {
circle(balls[i][0], balls[i][1], balls[i][2] * 2);
balls[i][0] += balls[i][3];
balls[i][1] += balls[i][4];
if (
balls[i][0] < balls[i][2] ||
balls[i][0] > 800 - balls[i][2]
) {
balls[i][3] = -balls[i][3];
}
if (
balls[i][1] < balls[i][2] ||
balls[i][1] > 600 - balls[i][2]
) {
balls[i][4] = -balls[i][4];
}
}
}
</script>
</body>
</html>

对象#

这个词似乎在C语言里面有一个很熟悉的东西 —— 结构体

可以简单理解就是给数组里面的东西取一个相对便于记忆的名字,方便直接进行读取

var arr = {
x: "apple",
y: 17,
z: "orange"
}
console.log(arr.x);

项目就可以改成这样:

<!doctype html>
<html>
<head>
<title></title>
</head>
<body>
<script src="./p5.min.js"></script>
<script>
let num = 5;
let balls = [];
function setup() {
createCanvas(800, 600);
background("blue");
for (let i = 0; i < num; i++) {
balls[i] = {
x: random(800),
y: random(600),
radius: random(20, 50),
speedX: random(-8, 8),
speedY: random(-8, 8),
};
}
}
function draw() {
background("blue");
fill("pink");
noStroke();
for (let i = 0; i < num; i++) {
circle(balls[i].x, balls[i].y, balls[i].radius * 2);
balls[i].x += balls[i].speedX;
balls[i].y += balls[i].speedY;
if (
balls[i].x < balls[i].radius ||
balls[i].x > 800 - balls[i].radius
) {
balls[i].speedX = -balls[i].speedX;
}
if (
balls[i].y < balls[i].radius ||
balls[i].y > 600 - balls[i].radius
) {
balls[i].speedY = -balls[i].speedY;
}
}
}
</script>
</body>
</html>

效果都是如下样式#

JavaScript 数组,二维数组与对象
https://ivoinkwell.xyz/posts/web-frontend/javascript-arrays-two-dimensional-arrays-and-objects/
作者
Ivo
发布于
2026-05-27
许可协议
CC BY-NC-SA 4.0