2013-10-01 41 views
4

嘗試合併json數組的重複鍵並以csv格式構建相應的值。通過重複鍵合併數組的值

A=[{a:1,b:2},{a:1,b:1},{a:1,b:6},{a:2,b:5},{a:2,b:3}] 

試圖在

A=[{a:'1',b:'2,1,6'},{a:2,b:'5,3'}] 

代碼,我試圖

var existingIDs = []; 
     A= $.grep(A, function (v) { 
      if ($.inArray(v.a, existingIDs) !== -1) { 
       return v.b+= ','; 
      } 
      else { 
       existingIDs.push(v.a); 
       return true; 
      } 
     }); 

輸出轉換就像

A=[{a:1,b:2},{a:1,b:'1,'},{a:1,b:'6,'},{a:2,b:5},{a:2,b:'3,'}] 
+0

請小心評論....下來選民 – joshua

回答

2

回報與1創建一個臨時對象,從等作爲鍵和不斷增加的b值,然後遍歷該對象創建新的數組:

var A = [{a:1,b:2},{a:1,b:1},{a:1,b:6},{a:2,b:5},{a:2,b:3}]; 
var temp = {}; 

for (var i=0; i<A.length; i++) { 
    temp[A[i].a] = 
     temp[A[i].a] === undefined ? 
      A[i].b : 
      temp[A[i].a] + ',' + A[i].b; 
} 

A = []; 

for (var key in temp) { 
    A.push({a: key, b:temp[key]}) 
} 

FIDDLE

+0

我們愛oneliners。 – joshua