我已经看过the big answer了,每个人都给出了完全不同的答案,但复杂程度不同。

我正在尝试这样做:

var tempFiles=[];
tempFiles[req.query.tenant,file.name]=finalName;


我不确定这是否奏效。

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

[ 'the value for file.name ': 'the value for final name' ]


req.query.tenant的值在哪里?这是正确的2D阵列吗?

最佳答案

您不能为此使用逗号。您必须具有单独的[ ]运算符。

tempFiles[req.query.tenant][file.name]=finalName;


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


计算表达式req.query.tenant
丢掉那个价值
计算表达式file.name
使用该值作为属性名称,以在“ tempFiles”引用的对象中查找


另外,请注意,如果您实际上只是在尝试进行分配之前就刚刚声明了数组,那么它将无法正常工作。您必须显式创建第二个维度:

var tempFiles = [];
tempFiles[ req.query.tenant ] = [];
tempFiles[ req.query.tenant ] [ file.name ] = finalName;


最后,如果所涉及的属性名称(req.query.tenantfile.name)是字符串,那么您实际上绝对不应该使用数组。您应该创建普通对象:

var tempFiles = {};
tempFiles[ req.query.tenant ] = {};
tempFiles[ req.query.tenant ] [ file.name ] = finalName;

关于javascript - 简单的JavaScript二维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21322503/

10-10 18:00
查看更多