这是我正在构建的 Node Webkit WebSQL 包装器的摘录,但我遇到了问题。请参阅<----
下面一行。
get_columns
是一个简单的 JavaScript 数组:
['id','group_name','description']
但是当它们从数据库中出来时,对象(又名 results.rows.item(i)
):
{'description','group_name','id'}
这是因为浏览器或 JavaScript 希望按字母顺序对所有对象进行排序吗?
db.transaction(function(tx) {
var sql = 'SELECT ' + get_columns + ' FROM ' + table;
tx.executeSql(sql, [], function(tx, results) {
if (results.rows.length) {
for (var i = 0; i < results.rows.length; i++) {
_data.push(results.rows.item(i)); // <---- columns from WebSQL are in alphabetical order, so not cool.
}
}
deferred.resolve(_data);
});
});
我的想法是处理该对象并将该对象的值作为每个键的值放入我的数组中。
最佳答案
使用 JSON.stringify
将结果作为第一个参数,将数组作为第二个参数来强制执行顺序:
function foo(get_columns)
{
var results = {"a":1,"b":2,"c":3};
_data = JSON.stringify(results, get_columns);
return _data;
}
foo(['c','a','b'])
引用文献
关于JavaScript 对象按字母顺序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21789395/