2015-01-13 30 views
0

我一直在努力與這一過去的一天,我似乎無法使它的工作。以下代碼總是返回false。我試過hasOwnProperty,typeof === 'undefined',typeof == 'undefined',我甚至試過只用looped_array[major_minor]['sum_sales']。我從來沒有得到循環的添加部分。它總是返回false。如果在數組中的鍵,然後將其設置它添加到它

爲了討論起見,我們只是說我已經被委託在純JavaScript中執行此操作。我可以在PHP和Python中輕鬆完成此操作,但我無法使用它們。這可能是我的問題,我試圖使用PHP知識並將其應用於js。我不是一個JavaScript程序員,但我需要學習。

我需要遍歷數千條記錄並從它們中構建一個總和數組。

我的原始數據看起來像

item['net_price_extended'] 
item['pg_major'] 
item['pg_minor'] 

major_minor是像這樣

var major_minor = item['pg_major'] + '' + item['pg_minor']; 

代碼我想現在創建不起作用

if('sum_sales' in looped_array[major_minor]) { 
      console.log("should be true"); 
      console.log('sum_sales' in looped_array[major_minor]); 
      looped_array[major_minor]['sum_sales']   += parseFloat(item['net_price_extended']); 
     } else { 
      console.log("should be false"); 
      console.log('sum_sales' in looped_array[major_minor]); 
      looped_array[major_minor]['sum_sales']   = parseFloat(item['net_price_extended']); 
     } 

所有代碼for the loop

for(r in margin_array) { 
     var item = margin_array[r]; 
     var major_minor = item['pg_major'] + item['pg_minor']; 

     looped_array[major_minor] = {}; 
     looped_array[major_minor]['pg_major']    = item['pg_major']; 
     looped_array[major_minor]['major_description'] = item['major_description']; 
     looped_array[major_minor]['pg_minor']    = item['pg_minor']; 
     looped_array[major_minor]['minor_description'] = item['minor_description']; 

     /************************ 
     * Calculate the totals * 
     ************************/ 

     if(looped_array[major_minor] && looped_array[major_minor]['sum_sales']) { 
      looped_array[major_minor]['sum_sales']   += parseFloat(item['net_price_extended']); 
     } else { 
      looped_array[major_minor]['sum_sales']   = parseFloat(item['net_price_extended']); 
     } 
} 
+0

我可能會誤解這裏的問題。你是否在一開始就知道所有可能的領域?如果你這樣做,你可以在循環之前將它們都設置爲0。 –

+0

我確實知道所有的字段,但是我想在一個循環中執行,而不是爲了性能原因而使用兩個字段。 –

+2

如果您提供了重新創建問題的完整代碼示例,這將有所幫助。 – Blazemonger

回答

0

在每次迭代中,再次改寫looped_array[major_minor]

looped_array[major_minor] = {}; 

你應該做一個檢查,看是否looped_array[major_minor]已定,這樣你就不會覆蓋整個事情:

for(r in margin_array) { 
     var item = margin_array[r]; 
     var major_minor = item['pg_major'] + item['pg_minor']; 


     /************************ 
     * Calculate the totals * 
     ************************/ 

     if(looped_array[major_minor]) { 
      looped_array[major_minor]['sum_sales']   += parseFloat(item['net_price_extended']); 
     } else { 
      looped_array[major_minor] = {}; 
      looped_array[major_minor]['pg_major']    = item['pg_major']; 
      looped_array[major_minor]['major_description'] = item['major_description']; 
      looped_array[major_minor]['pg_minor']    = item['pg_minor']; 
      looped_array[major_minor]['minor_description'] = item['minor_description']; 

      looped_array[major_minor]['sum_sales']   = parseFloat(item['net_price_extended']); 
     } 
} 
+0

現在我覺得很蠢。謝謝 –

相關問題