Как вы перебираете имя поля в наборе записей javascript? - PullRequest
0 голосов
/ 09 ноября 2011

Я использую следующий код для запроса базы данных sqlite с использованием javascript, и все работает нормально:

function getQueryRecord(tx, rs) {
                var stringResult = '';
                for(i=0;i<rs.rows.length;i++)
                {
                    r =rs.rows.item(0);
                                    $('#someting').append(r['field1'] + ' ' + r['field2']);
                }
            }

            function getUserGroup()
            {

                var db = window.openDatabase("scores", "", "Previous Scores", 1024*1000);

                db.transaction(function(tx) {
                    tx.executeSql('SELECT * FROM user_group', [], getQueryRecord);
                 });
            }

Возможно ли сделать что-то подобное в getQueryRecord, чтобы выполнить цикл по всему полю?Если да, какой правильный синтаксис?

for(k=0;k<r.fields.length;i++)
{
  $('#something').append(r[k]);
}

Спасибо.

1 Ответ

1 голос
/ 09 ноября 2011

Вы пробовали синтаксис for...in:

for(k in r) {
   if (r.hasOwnProperty(k))
      $('#something').append(r[k]);
}

В цикле k будет равно имени первого свойства, затем второго свойства и т. Д.(Хотя, сказав «первый» и «второй», порядок итерации произвольный.)

Оператор if с .hasOwnProperty() является «необязательным» в зависимости от структуры вашего объекта / иерархии: он проверяет, является ли конкретное свойство «прямым» свойством объекта или свойством откуда-то вверх по цепочке прототипов (отмечая, что структура for ... in возвращает оба типа свойств).Если вы не уверены, что вам это нужно, то, вероятно, вам это нужно.

Примечание. Этот метод применяется в целом к ​​объектам JavaScript, а не конкретно к объектам вашей базы данных.

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