2010-10-31 53 views
0

我試圖使用USERBOX插件,在這個例子中,我們有以下陣列正在興建的Javascript轉換爲例,真正的代碼問題 - 陣列

var data = [ 
    {text: "Adam Adamson", id: "[email protected]"}, 
    {text: "Betsy Boop",  id: "[email protected]"}, 
    {text: "Jooles Jooles", id: "[email protected]"} 
]; 

我要建立使用JSON我在運行時數組我從我的web服務收到的數據。 在我的代碼中,我試圖用下面的方法來模仿這個數組。

var data = new Array(); 

    for (var i = 0; i < msg.d.ListExercise.length; i++) { 
     $("userlist").append("msg.d.ListExercise[i].exercise_value"); 
     if (i > 0 && i < msg.d.ListExercise.length - 1) { 
      data.push('{text: ' + '"' + msg.d.ListExercise[i].exercise_value + '"' + ' , id: ' + '"' + msg.d.ListExercise[i].exercise_id + '"' + '},'); 
     } 
     if (i == msg.d.ListExercise.length - 1) { 
      data.push('{text: ' + '"' + msg.d.ListExercise[i].exercise_value + '"' + ' , id: ' + '"' + msg.d.ListExercise[i].exercise_id + '"' + '}'); 
     } 
    } 

從我所瞭解的例子中他建立了一個字符串數組。我已經驗證數組正在被添加到數據並且數據正在被添加到它。但是,當我將數組傳遞給插件代碼時,它顯示單詞'Undefined'135次(數組的長度)。

我的數組看起來是這樣的:

{text: "Standard Push-Up" , id: "1"}, 
{text: "Wide Front Pull-Up" , id: "2"}, 
{text: "Vertical Punches" , id: "135"} 

是什麼讓我的數據到在JavaScript他的陣列例子的最佳方式?

+1

丟失單引號。你現在正在推絃樂,而不是對象 – mplungjan 2010-10-31 17:12:40

+0

@mplungjan - 謝謝,你是對的! – webdad3 2010-10-31 17:33:39

回答

2

你應該建立一個哈希數組,而不是看起來像散列的字符串數組。你需要像

data.push({text: msg.d.ListExercise[i].exercise_value, id: msg.d.ListExercise[i].exercise_id });

1

目前你推到字符串數組,只是去掉引號所以你推對象,像這樣:

var data = []; 
for (var i = 0; i < msg.d.ListExercise.length; i++) { 
    data.push({ text: msg.d.ListExercise[i].exercise_value, id: msg.d.ListExercise[i].exercise_id }); 
} 

或者因爲您所標記的問題jQuery,使用$.map()這樣的:

var data = $.map(msg.d.ListExercise, function() { 
    return { text: this.exercise_value, id: this.exercise_id }; 
}); 
+0

我試過了$ .map的功能,它什麼都沒有返回......我是否必須將該代碼放入循環中,還是應該循環遍歷數據並將其自動添加到數組中? – webdad3 2010-10-31 17:33:10

+0

@Jeff - 啊廢話我在變量副本上留下了'.length',更新後的版本應該可以工作,它會替換你問題中的所有代碼。 – 2010-10-31 17:35:16