2014-02-14 42 views
1

這裏是我正在構建的一個Node Webkit WebSQL包裝器的摘錄,我遇到了一個問題。請參閱下面的<----一行。按字母順序排列的JavaScript對象

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); 
    }); 
}); 

我的想法是處理對象,並將對象的值放入我的數組中作爲每個鍵的值。

+1

相關:HTTP ://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order – epascarello

+0

那麼我的預感是正確的。我將不得不解釋結果對象,並在預期的列上執行1:1匹配並分配值。 –

+0

究竟是什麼問題?無論如何,如果它是一個對象,您將通過屬性名稱來訪問它。或者你想要將每行的數組推到'_data'? – Bergi

回答

1

使用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']) 

參考