我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。

如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)


当前回答

您可以分配一个行数组,其中每一行都是相同长度的数组。或者你也可以用rows*columns元素分配一个一维数组,并定义方法将行/列坐标映射到元素索引。

无论选择哪种实现,如果将其包装在对象中,则可以在原型中定义访问器方法,从而使API易于使用。

其他回答

var playList = [ ['I Did It My Way', 'Frank Sinatra'], ['Respect', 'Aretha Franklin'], [‘想象’,‘约翰·列侬’] 《为奔跑而生》《布鲁斯·斯普林斯汀》 [《路易·路易》,《王牌特工》], [《Maybellene》,《Chuck Berry》] ]; 函数print(message) { document . write(消息); } 函数printSongs(歌曲){ var listHTML; listHTML = '<ol>'; For (var I = 0;I < songs.length;I += 1) { 李listHTML + = ' < > ' +歌曲[我][0]+的”+歌曲[我][1]+ '李< / > '; } listHTML += '</ol>'; 打印(listHTML); } printSongs(播放列表);

我不喜欢使用.fill()的ES6解决方案。有些可能可以工作,但为了避免引用复制问题而添加的额外箍使它们不直观。

我建议的ES6方法是对外部数组和内部数组充分利用展开运算符。在我看来,这更容易解释。

[...Array(3)].map(() => [...Array(4)])

如果你需要设置一个初始值,那么你可以在内部数组创建时使用.map()链接:

[...Array(3)].map(() => [...Array(4)].map(() => 0))

最后,一个类型安全的TypeScript util函数:

export const createMultiDimensionalArray = <T>(
  n: number,
  m: number,
  initialVal?: T,
): T[][] => {
  const matrix = [...Array(n)].map(() => [...Array(m)]);
  return initialVal === undefined
    ? matrix
    : matrix.map(r => r.map(() => initialVal));
};

使用它的例子:

const a = createMultiDimensionalArray(1, 2);
a[1][2] = 3;     // Works

const b = createMultiDimensionalArray(2, 3, false);
b[1][2] = true;  // Works
b[1][2] = 3;     // Error: Type '3' is not assignable to type 'boolean'.

如果你是在谷歌图表的2D数组,最好的方法是

var finalData = [];
[["key",value], ["2013-8-5", 13.5], ["2013-7-29",19.7]...]

指的是 不是一个有效的2d数组谷歌图表

我发现下面是最简单的方法:

Var array1 = [[]]; Array1 [0][100] = 5; alert (array1 [0] [100]); 警报(array1.length); alert (array1 [0] . length);

为Java Script创建n维矩阵数组,填充初始默认值为0。

function arr (arg, def = 0){
      if (arg.length > 2){
        return Array(arg[0]).fill().map(()=>arr(arg.slice(1)));
      } else {
        return Array(arg[0]).fill().map(()=>Array(arg[1]).fill(def));
      }
    }

// Simple Usage of 4 dimensions
var s = arr([3,8,4,6])

// Use null default value with 2 dimensions
var k = arr([5,6] , null)