2010-06-11 145 views
4

我需要遍历数组并将所有变量设置为false或true。我曾尝试多种选择,其中没有一个工作,这显然我缺乏JavaScript语法的knowledge..Please看看这个:在数组中循环并将所有变量设置为false或true

var closeAllCells = [IncomeOpen = "false", 
        RehabOpen = "false", 
        AttendantCareOpen = "false", 
        HomeMaintenanceOpen = "false", 
        DependantCareOpen = "false", 
        IndexationOpen = "false", 
        DeathFuneralOpen = "false", 
        ComprehensiveOpen = "false", 
        CollisionOpen = "false", 
        LiabilityOpen = "false", 
        DCPDOpen = "false"]; 

所以我的想法是,我能刚刚超过这个循环如下

for (var i=0;i<closeAllCells.length;i++) 
{ 
    closeAllCells[i] = true; // or false if I wished 
} 

回答

2

在您的例子一个很好的选择,你正在创建一个包含分配给了一堆的全局变量,数组外观的值的数组像这样:

[false, false, false, false, false, false, ...]

您正在寻找使用object literal你的值存储为属性的对象,例如:

var data = { 
    IncomeOpen : false, 
    RehabOpen : false, 
    AttendantCareOpen : false, 
    HomeMaintenanceOpen : false, 
    DependantCareOpen : false, 
    IndexationOpen : false, 
    DeathFuneralOpen : false, 
    ComprehensiveOpen : false, 
    CollisionOpen : false, 
    LiabilityOpen : false, 
    DCPDOpen : false 
}; 

for (var prop in data) { 
    if (data.hasOwnProperty(prop)) { 
    data[prop] = true; 
    } 
} 

正如你可以看到,我们在这里使用一个for...in循环,这句话的目的是为了枚举对象属性。

您也可以访问各个属性如下:

alert(data.IncomeOpen); // true, or 
alert(data["RehabOpen"]); // true 

你也许会奇怪,为什么我们需要调用hasOwnProperty方法,以及那以确保只有自己的属性(物理上存在于对象的属性,我们定义的那些)被枚举,而不是任何继承的属性。

参见:

+0

感谢CMS,这工作得很好! – 2010-06-11 06:55:16

-2

新手的错误,我认为这是字符串分配,使我竖起大拇指!应该是:

var closeAllCells = [IncomeOpen = false, 
        RehabOpen = false, 
        AttendantCareOpen = false, 
        HomeMaintenanceOpen = false, 
        DependantCareOpen = false, 
        IndexationOpen = false, 
        DeathFuneralOpen = false, 
        ComprehensiveOpen = false, 
        CollisionOpen = false, 
        LiabilityOpen = false, 
        DCPDOpen = false]; 

我觉得呢?

+0

嗯,仍然不正确。如果我追踪出IncomeOpen var,我不能引用它,例如:alert(closeAllCells [i]); – 2010-06-11 06:50:59

0

你正在定义你的数组像对象类?这是一个有趣的符号,哈哈..

你的指数是不是在引号或撇号和假应该(不包括引号)

var closeAllCels = new Array(); 
closeAllCells['IncomeOpen'] = false; 
closeAllCells['RehabOpen'] = false; 

也许你正在考虑的对象是本身?

var closeAllCells = { IncomeOpen : false, 
         RehabOpen = false 
        }; 

如已通过CMS指出,对象将是雅

+0

谢谢丹,我设法与CMS的选项来对你的对象的例子类似! – 2010-06-11 06:56:36

0

你的数组实际上是一个关联数组或哈希。并宣布它的正确的语法是:

var closeAllCells = { 
    IncomeOpen: false, 
    RehabOpen: false 
}; 

那么你就可以在你的对象的每个属性迭代:

for (var property in closeAllCells) { 
    closeAllCells[property] = false; 
} 
0

一旦你定义的数组的内容将要举办一个特别的您可以通过循环来更改该值的值类型,但直到您定义数组的内容类型时,您无法循环访问它。

相关问题