我已经看过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阵列吗?
答案 0 :(得分:6)
您不能使用逗号。您必须拥有单独的[ ]
运营商。
tempFiles[req.query.tenant][file.name]=finalName;
反过来说,您的代码不是语法错误,因为逗号运算符确实存在。你的版本的含义是:
req.query.tenant
file.name
另外,请注意,如果您在尝试进行分配之前确实刚刚声明了数组,那么它将无效。您必须明确创建第二个维度:
var tempFiles = [];
tempFiles[ req.query.tenant ] = [];
tempFiles[ req.query.tenant ] [ file.name ] = finalName;
最后,如果涉及的属性名称 - req.query.tenant
和file.name
- 是字符串,那么你真的不应该使用数组。您应该创建普通对象:
var tempFiles = {};
tempFiles[ req.query.tenant ] = {};
tempFiles[ req.query.tenant ] [ file.name ] = finalName;