0

我有一个 2x10 数组,我需要为该数组的任何成员设置一个变量。手工制作它并不酷,所以我试图通过 for 操作员声明:

    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;
};
4

1 回答 1

1

您必须创建一个对象,并使用您尝试生成属性名称的左手技巧,或者您必须回退到全局对象(我希望您不要这样做):

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

要完整,但再次:实际上不要这样做,您可以替换nameswindow. 在这种情况下,您将污染全局范围。
也许您可能想要检查值(如x和)以获取使访问属性“困难”i的值,如,或者实际上是您在示例中连接的破折号:j%

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

这是因为破折号或减量运算符不被视为属性的一部分。无论哪种方式,在您的情况下,使用单独的变量都不是最好的方法。由于这个原因,编程语言支持数组和对象:对相关数据进行分组,使它们易于通过单个变量访问
如果需要,只需使用一个对象,如果没有,请使用array.sort(function(){});
检查 MDN 构建一个排序数组,了解如何实现这一点,如果您遇到困难,请告诉我们....

于 2013-06-25T10:01:30.760 回答