2014-07-03 47 views
0

編輯:應用莫名其妙地寫不必要的參數爲對象[解決]

我的指令,試圖寫屬性的數組不存在,顯然該指令的控制器之前發射。標記爲關閉。


我有兩個功能。他們都採取了大規模的JSON對象,其中之一則切換到格式:

[{ date: 'date', count_0: '10' }, 
{ date: 'date', count_0: '10' }] 

其他功能改變JSON對象格式爲:

[{ date: 'date', count_0: '10', count_1: '20', count_2: '30' ... }, 
{ date: 'date', count_0: '10', count_1: '20', count_2: '30' ... }] 

這裏的怪異的一部分。 我只調用第一個函數,但是我的程序正試圖產生第二個函數的格式。

其他函數在我的代碼中,但我知道它沒有被調用,因爲它裏面有一些alert函數沒有觸發。

這是一個澄清,使我的問題更清晰。下面是第一個函數... (for... in)垃圾和條件語句的一串:

function firstFunction(data, sort, campaign) { 
    var transformed_data = []; 

    // Loop through the original data 
    for(var d in data) { 
    var obj = data[d]; 

    // If you have the correct campaign data 
    if(obj.name === campaign) { 

     // For each data entry in this object 
     for(var obj_d in obj.data) { 
     var obj_data = obj.data[obj_d]; 

     // Create a temporary transformed object to hold the proper data 
     var transformed_obj = { 
      date: obj_data.date, 
      count_0: obj_data[sort] 
     } 

     // This console log shows the transformed_obj in the expected format 
     console.log(transformed_obj); 

     // Push the temporary object into the helper array 
     transformed_data.push(transformed_obj); 

     // This console log flips a shit 
     console.log(transformed_data); 
     } 
    } 
    } 
    // Return helper array 
    return transformed_data; 
} 

第一個控制檯登錄該功能顯示正確的格式:

Object {date: "2013-01-01", count_0: 17147}

第二控制檯日誌這表明:

[Object]

好了,這樣好遠...讓我們展開......

擴展:

0: Object 
1: Object 
2: Object 
3: Object 
4: Object 
5: Object 
6: Object 
7: Object 

什麼?這預計不會在所有...不知道如果我們擴大這些對象中的一個發生了什麼......

擴展對象:

count_0: 17147 
count_1: NaN 
count_2: NaN 
count_3: NaN 
count_4: NaN 
count_5: NaN 
date: Mon Dec 31 2012 19:00:00 GMT-0500 (EST) 

什麼????爲什麼它試圖寫count_1count_5?這裏可能是什麼問題?有任何想法嗎?

如果有幫助,我可以添加更多代碼。謝謝你 -

+0

您能否展示一些示例數據和函數調用,以便我們可以嘗試自己查看結果?如果你無法嘗試,調試有點困難。 – JJJ

+0

我會嘗試編譯一些並將其添加到問題中。 –

+1

請勿使用'for ... in'循環遍歷數組。使用普通的'for'循環與索引變量或'.forEach()'方法(在較新的瀏覽器中)。 – Pointy

回答

2
var obj_data = obj.data[obj_data]; 

正在破壞你的循環「迭代器」。嘗試使用不同的變量(例如var element =)。

此外,你用jQuery標記了這個問題 - why not embrace jQuery

+0

不錯的發現,我解決了變量問題。它仍然試圖編寫多個'count_i'的東西。 –

+0

好。繼續並更新您的問題。另外,你有沒有使用jsFiddle? http://jsfiddle.net/ – Upperstage

+0

請參閱上面的@ Pointy的評論。對學習jQuery循環的投資將帶來收益。 :) – Upperstage