2013-06-25 87 views
0

我得到了一個2x10數組,我需要爲該數組的任何成員設置一個變量。用手使之成爲不冷靜,所以我試着去操作員declarate由:用Javascript爲operator聲明變量

allImages=[ 
    [ 
     'img1-1','img1-2', 'img1-3', 'img1-4', 'img1-5' 
    ],[ 
     'img2-1','img2-2', 'img2-3', 'img2-4', 'img2-5' 
    ] 
]; 

for(i=0;i<1;i++){ 
    console.log(i + ' part ------------------------'); 
    for(j=0;j<5;j++){ 

     x+(i+'-'+j) = allImages[i][j]; 
     console.log((x+(i+'-'+j)) + '-> item'); 
    } 
} 

不過貌似我做一個基本錯誤:

Invalid left-hand side in assignment 

無論如何,我不能找出如何解決這個。任何人都可以說如何用自定義鍵爲運算符或其他方法拋出大量變量?

-----我的解決方案通過(https://stackoverflow.com/users/1230836/elias-van-ootegem):

var statImg = {}; 
var blurImg ={}; 

for (var i = 0; i < 13; i++) { 
    var keyName = 'img'+i; 
    var valOfKey = 'img/'+i+'.png' 
    statImg[keyName] = valOfKey; 
    blurImg[keyName] = valOfKey; 
}; 
+1

你沒有。數組和對象用於保存多個相關的值。爲什麼你認爲你需要*每個值的變量? –

+0

可能重複[訪問Javascript變量動態](http://stackoverflow.com/questions/11515924/access-javascript-variables-dynamically) –

+0

不適合我,但是謝謝 – uhthska

回答

1

你必須要麼創建一個對象,並用左手欺騙你想生成屬性名稱,或者你就必須退回到全局對象(我希望你不要):

var names = {};//create object 
//-> in loop: 
names[ x+(i+'-'+j)] = allImages[i][j]; 

是完整的,但又說:實際上並沒有去做到這一點,你可以取代nameswindow。在這種情況下,你將會污染全球範圍。
也許你可能要檢查的值(如xij)的值,使其「困難」訪問屬性,如%,或者實際上你在你的例子串聯破折號:

var anObj = {}; 
anObj['my-property'] = 'this is valid'; 
console.log(anObj.my-property);//ReferenceError: property is not defined 

這是因爲破折號或減量運算符不被視爲屬性的一部分。無論如何,在你的情況下,使用單獨的變量不是最好的選擇。編程語言支持數組和對象,因爲這個原因:分組相關的數據,使他們很容易通過一個變量訪問
如果需要,必須,只需要使用一個對象,如果沒有,你建設使用排序如何acchieve這個array.sort(function(){});
檢查MDN一個數組,如果你堅持下來的方式,讓我們知道....

+0

感謝您的幫助!是工作) – uhthska