2014-01-24 89 views
0

我已經看到the big answer已經,每個人都給出了完全不同的答案,不同程度的複雜性。簡單的javascript二維數組

我試圖做到這一點:

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值去?這是一個適當的二維數組?

回答

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; 
+0

這給了我一個錯誤'無法設置屬性「[最終名稱值]」的undefined' – Houseman

+1

@Houseman剛剛更新的答案:) – Pointy