我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
当前回答
Javascript不支持二维数组,相反,我们将一个数组存储在另一个数组中,并根据您想访问的数组的位置从该数组中获取数据。记住数组编号从0开始。
代码示例:
/* Two dimensional array that's 5 x 5
C0 C1 C2 C3 C4
R0[1][1][1][1][1]
R1[1][1][1][1][1]
R2[1][1][1][1][1]
R3[1][1][1][1][1]
R4[1][1][1][1][1]
*/
var row0 = [1,1,1,1,1],
row1 = [1,1,1,1,1],
row2 = [1,1,1,1,1],
row3 = [1,1,1,1,1],
row4 = [1,1,1,1,1];
var table = [row0,row1,row2,row3,row4];
console.log(table[0][0]); // Get the first item in the array
其他回答
我发现下面是最简单的方法:
Var array1 = [[]]; Array1 [0][100] = 5; alert (array1 [0] [100]); 警报(array1.length); alert (array1 [0] . length);
我的解决方案不会是最好的,但只是给出我的解决方案来创建用户定义的多维数组。
这个函数接受行和列,
function createArray(row,column) {
let arr = [];
for(var i=0; i<row; i++){
arr[i] = [Math.floor(Math.random() * (10))];
for(var j=0;j<column;j++){
arr[i][j]= [Math.floor(Math.random() * (20))];
}
}
return arr;
}
var arrVal = createArray(4, 5);
console.log(arrVal);
我发现这段代码适合我:
var map = [
[]
];
mapWidth = 50;
mapHeight = 50;
fillEmptyMap(map, mapWidth, mapHeight);
...
function fillEmptyMap(array, width, height) {
for (var x = 0; x < width; x++) {
array[x] = [];
for (var y = 0; y < height; y++) {
array[x][y] = [0];
}
}
}
要创建一个4x6数组,只需这样做
const x = [...new Array(6)].map(elem => new Array(4))
通常从一个空数组开始是一个很好的实践,而不是填充w个随机值。(你通常在1D中将数组声明为const x =[],所以在2D中最好以w为空开始。)
下面的例子定义了一个名为activities的二维数组:
let activities = [
['Work', 9],
['Eat', 1],
['Commute', 2],
['Play Game', 1],
['Sleep', 7]
];
在活动数组中,第一个维度表示活动,第二个维度显示每个活动每天花费的小时数。
要在控制台中显示活动数组,可以使用console.table()方法,如下所示:
console.table(activities);
输出如下所示:
┌─────────┬─────────────┬───┐ │(index)│0│1│ ├─────────┼─────────────┼───┤ │0│’Work’│9│ │1│’Eat’│1│ │2│’Commute’│2│ │3│’Play Game’│1│ │4│’Sleep’│7│ └─────────┴─────────────┴───┘
注意,(index)列用于表示内部数组的索引。
要访问多维数组的元素,首先使用方括号访问返回内部数组的外部数组的元素;然后使用另一个方括号访问内部数组的元素。
下面的例子返回上面activity数组中第一个内部数组的第二个元素:
console.log(activities[0][1]); // 9
向JavaScript多维数组中添加元素
您可以使用数组方法,如push()和splice()来操作多维数组的元素。
例如,要在多维数组的末尾添加一个新元素,可以使用push()方法,如下所示:
activities.push(['Study',2]);
┌─────────┬─────────────┬───┐ │(index)│0│1│ ├─────────┼─────────────┼───┤ │0│’Work’│9│ │1│’Eat’│1│ │2│’Commute’│2│ │3│’Play Game’│1│ │4│’Sleep’│7│ │5│’Study’│2│ └─────────┴─────────────┴───┘
要在数组中间插入一个元素,可以使用splice()方法。下面的代码将一个元素插入到activities数组的第二个位置:
activities.splice(1, 0, ['Programming', 2]);
┌─────────┬───────────────┬───┐ │(index)│0│1│ ├─────────┼───────────────┼───┤ │0│’Work’│9│ │1│’Programming’│2│ │2│’Eat’│1│ │3│’Commute’│2│ │4│’Play Game’│1│ │5│’Sleep’│7│ │6│’Study’│2│ └─────────┴───────────────┴───┘
这个示例计算在每个活动上花费的时间的百分比,并将该百分比附加到内部数组。
activities.forEach(activity => {
let percentage = ((activity[1] / 24) * 100).toFixed();
activity[2] = percentage + '%';
});
┌─────────┬───────────────┬───┬───────┐ │(index)│0│1│2│ ├─────────┼───────────────┼───┼───────┤ │0│’Work’│9│’38%’│ │1│’Programming’│2│’8%’│ │2│’Eat’│1│’4%’│ │3│’Commute’│2│’8%’│ │4│’Play Game’│1│’4%’│ │5│’Sleep’│7│’29%’│ │6│’Study’│2│’8%’│ └─────────┴───────────────┴───┴───────┘
从JavaScript多维数组中删除元素
要从数组中删除一个元素,可以使用pop()或splice()方法。
例如,下面的语句删除了activities数组的最后一个元素:
activities.pop();
┌─────────┬───────────────┬───┬───────┐ │(index)│0│1│2│ ├─────────┼───────────────┼───┼───────┤ │0│’Work’│9│’38%’│ │1│’Programming’│2│’8%’│ │2│’Eat’│1│’4%’│ │3│’Commute’│2│’8%’│ │4│’Play Game’│1│’4%’│ │5│’Sleep’│7│’29%’│ └─────────┴───────────────┴───┴───────┘
类似地,可以使用pop()方法从多维数组的内部数组中删除元素。下面的示例从活动数组的内部数组中删除百分比元素。
activities.forEach((activity) => {
activity.pop(2);
});
┌─────────┬───────────────┬───┐ │(index)│0│1│ ├─────────┼───────────────┼───┤ │0│’Work’│9│ │1│’Programming’│2│ │2│’Eat’│1│ │3│’Commute’│2│ │4│’Play Game’│1│ │5│’Sleep’│7│ └─────────┴───────────────┴───┘
遍历JavaScript多维数组的元素
要迭代多维数组,可以使用嵌套for循环,如下例所示。
// loop the outer array
for (let i = 0; i < activities.length; i++) {
// get the size of the inner array
var innerArrayLength = activities[i].length;
// loop the inner array
for (let j = 0; j < innerArrayLength; j++) {
console.log('[' + i + ',' + j + '] = ' + activities[i][j]);
}
}
第一个循环遍历外部数组的元素,嵌套循环遍历内部数组的元素。
脚本在控制台中输出如下:
[0,0] =功 [0,1] = 9 [1,0] =吃 [1,1] = 1 [2,0] =通勤 [2,1] = 2 [3,0] =玩游戏 [3,1] = 1 [4,0] =睡眠 [4,1] = 7 [5,0] =学习 [5,1] = 2
或者你可以使用forEach()方法两次:
activities.forEach((activity) => {
activity.forEach((data) => {
console.log(data);
});
});
工作 9 吃 1 上下班 2 玩游戏 1 睡眠 7 研究 2