简单的javascript 2d数组

时间:2014-01-24 01:03:26

标签: javascript arrays

我已经看过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阵列吗?

1 个答案:

答案 0 :(得分:6)

您不能使用逗号。您必须拥有单独的[ ]运营商。

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;