Цикл над массивом и установить все переменные в false или true в JavaScript - PullRequest
4 голосов
/ 11 июня 2010

Мне нужно перебрать массив и установить все переменные в false или true. Я перепробовал множество вариантов, ни один из которых не работает, и это явно мое отсутствие знания синтаксиса JavaScript. Пожалуйста, посмотрите на это:

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
}

Ответы [ 5 ]

2 голосов
/ 11 июня 2010

В вашем примере вы создаете массив, который содержит значения, присвоенные группе глобальных переменных, массив выглядит следующим образом:

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

Вы ищетеиспользуйте литерал объекта для хранения ваших значений в качестве свойств объекта, например:

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 голосов
/ 11 июня 2010

Как только вы определили, что содержимое массива будет содержать определенный тип значения, вы можете зациклить его, чтобы изменить значение, но пока вы не определите тип содержимого массива, вы не можете зациклить его.

0 голосов
/ 11 июня 2010

Ваш массив на самом деле является ассоциативным массивом или хэшем.и правильный синтаксис для его объявления:

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

, затем вы можете перебирать каждое свойство в вашем объекте:

for (var property in closeAllCells) {
    closeAllCells[property] = false;
}
0 голосов
/ 11 июня 2010

Вы определяете свой массив как объект вроде? это интересная запись, лол ..

Ваши индексы не в кавычках или апострофах, и ложь должна быть сама по себе (не в кавычках)

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

возможно, вы думали об объекте?

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

Как уже говорилось в CMS, объект будет отличным вариантом для вас

0 голосов
/ 11 июня 2010

Ошибка новичка, я думаю, что это строковое назначение меня взволновало! Должно быть:

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

Я думаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...