2011-11-30 150 views
1

我有一個讀取函數顯示來自HTML5的WEBSQL的SELECT查詢的內容。我想重用該功能,但我有問題,因爲我得到的是一個JSON對象數組,我想將其轉換爲rows.item(),所以有誰知道這是如何工作的?

例子,我有這樣的JSON陣列

"retdic":[{"row_index":0,"lname":"Mato","age":26,"gender":"M","pic":"cyborg.jpg","fname":"Shibiru"}, 
      {"row_index":1,"lname":"Taro","age":30,"gender":"M","pic":"folder_wrench.png","fname":"Ichigo"}, 
      {"row_index":2,"lname":"Joni","age":27,"gender":"M","pic":"naruto.jpg","fname":"Perez"}, 
      {"row_index":3,"lname":"Sakura","age":24,"gender":"F","pic":"folder_table.png","fname":"Haruka"},    
      {"row_index":4,"lname":"Naruto","age":20,"gender":"M","pic":"naruto.jpg","fname":"Uzumaki"}] 

我怎樣才能將它轉換爲喜歡$ result.rows.item()? item()不是一個數組,如果它是一個數組,它應該是item []。

UPDATE

使用我想通了,如何做到這一點的想法和傑夫的幫助。看看live example

+0

我投了你的問題,因爲它幫助我很多,你分享了jeff的想法,它完全爲我工作我是從jos數據從ios本地代碼傳遞給Javascript和網頁是使用result.rows.item(x)來檢索它,這沒有伎倆感謝隊友 – Talha

+0

我只需要改變一點點var結果=對象(); result ['rows'] = Object(); result ['rows'] ['length'] = jsonResult.length; result ['rows'] ['item'] = function(i){return jsonResult [i]}; – Talha

回答

2

好吧,假設你的數組和item()函數的唯一區別是一個是數組而另一個函數(我假設你使用item()作爲「$ result .rows.item(3)「獲得第四排),非常簡單。 只需定義一個函數,它接受參數i並返回數組中索引爲i的項。 所以:

var myItemFunction = function(i) { 
    return retdic[i] 
} 
+0

嗨傑夫謝謝你,這是工作。但我希望該函數像$ result.rows.item()。我試過var $ result.rows.item = function(i){return retdic [i]}但它不起作用。你可以幫我嗎? –

+0

嗨,我想通了。謝謝! –

0

你不需要這個對象轉換,您可以通過這種方式訪問​​您的數據:

$result.retdic[0].lname // 0 - row number 

或循環:

var i,item; 
for (i in $result.retdic) { 
    item = $result.retdic[i]; 
    console.log(item.fname) 
} 

PS:如果您願意,可以將'retdic'鍵重命名爲'rows'

$res = {"rows":[ 
    {"name": "a"}, 
    {"name": "b"}, 
    {"name": "c"} 
]}; 


var someKey = 'name', 
valueOfSomeKey = $res.rows[rowNumberHere][someKey]; 
+0

謝謝,但這並不完全是什麼後即時。但無論如何感謝你的時間愛麗絲卡 –