简单的javascript 2d数组

Hou*_*man 0 javascript arrays

我已经看到了很大的答案,每个人都给出了完全不同的答案,具有不同程度的复杂性.

我正在尝试这样做:

var tempFiles=[];
tempFiles[req.query.tenant,file.name]=finalName;
Run Code Online (Sandbox Code Playgroud)

我不确定这是否有效.

当我console.log(tempFiles),我得到

[ 'the value for file.name ': 'the value for final name' ]
Run Code Online (Sandbox Code Playgroud)

哪里的价值req.query.tenant去?这是一个合适的2D阵列吗?

Poi*_*nty 6

你不能使用逗号.你必须有单独的[ ]运营商.

tempFiles[req.query.tenant][file.name]=finalName;
Run Code Online (Sandbox Code Playgroud)

反过来说,您的代码不是语法错误,因为逗号运算符确实存在.您的版本的含义是:

  • 评估表达 req.query.tenant
  • 抛弃那个价值
  • 评估表达 file.name
  • 使用该值作为属性名称来查找"tempFiles"引用的对象

另外,请注意,如果您在尝试进行分配之前确实刚刚声明了数组,那么它将无效.您必须明确创建第二个维度:

var tempFiles = [];
tempFiles[ req.query.tenant ] = [];
tempFiles[ req.query.tenant ] [ file.name ] = finalName;
Run Code Online (Sandbox Code Playgroud)

最后,如果涉及的属性名称 - req.query.tenantfile.name- 是字符串,那么你真的不应该使用数组.你应该创建普通对象:

var tempFiles = {};
tempFiles[ req.query.tenant ] = {};
tempFiles[ req.query.tenant ] [ file.name ] = finalName;
Run Code Online (Sandbox Code Playgroud)