jQuery - Safari/iOS中SqlResultsetRowList上的$ .each

ray*_*ayt 4 javascript sqlite safari jquery ios

我正在尝试使用$ .each来加速我正在使用For循环的SqlResultsetRowList的迭代.这是新代码 -

localDB.transaction(function(transaction){ transaction.executeSql(query, [val], function(transaction, results) { var rows = results.rows; $.each(rows, function(i) { var row = results.rows.item(i); }); } ) });

问题是i返回的不是索引而是字符串"length",它显然在那时断开.

我已经做了一些进一步的测试,这在Chrome中可以正常运行.Chrome将SqlResultsetRowList视为数组,但Safari则不然.是否有可能将结果集转换为数组,以便Safari可以使用$ .each迭代它?

ray*_*ayt 9

所以这似乎只影响Safari和Mobile Safari,我发现以下内容足以满足我的目的.为可能处于相同情况的任何人添加.

由于Safari没有将SqlResultsetRowList视为数组,因此您需要从中创建一个.

var contacts = [];

for (i = 0; i < results.rows.length; i++){
    contacts.push(results.rows.item(i));
}
Run Code Online (Sandbox Code Playgroud)

现在您已经根据结果创建了数组,您可以contacts使用迭代$.each.

$.each(contacts, function() {
    var ID = this.Contact_ID;
    //more logic here
});
Run Code Online (Sandbox Code Playgroud)