2016-03-15 35 views
1

以前我問過這個問題,(how to filter data in array loop),但我有我的第二陣列的一些變化,如..下面給出.. 在我的數組是這樣的,在陣列循環如何過濾數據222

var myColumnDefs = [ 

    {a: "hh", b: "hh", c: "jk", d: "ggh", e: "hvh"}, 

    {a: "dd", b: "gg", d: "nn", e: "rr", f: "jj"},..... 
] 

我要篩選數據,並插入新的陣列數據這樣

var newarray = {a,b,c,d,e,f} 

&另一個陣列

var mysecondarray = [ 

    {hh,hhjk,ggh,hvh,null}, 

    {dd,gg,null,nm,rr,jj},.... 
] 
+0

你在哪裏指定的順序? –

+0

如果你真的解釋規則如何形成這個數據將會有所幫助 – Andrey

回答

2

先收集每個密鑰,然後收集數據。

var myColumnDefs = [{ a: "hh", c: "jk", d: "ggh", e: "hvh" }, { a: "dd", b: "gg", d: "nn", e: "rr", f: "jj" }], 
 
    result = function (array) { 
 
     var r = { keys: [], data: [] }, o = {}; 
 
     array.forEach(function (a) { 
 
      Object.keys(a).forEach(function (k) { 
 
       if (!(k in o)) { 
 
        o[k] = r.keys.push(k) - 1; 
 
       } 
 
      }); 
 
     }); 
 
     r.keys.sort(); // sort all keys 
 
     array.forEach(function (a) { 
 
      r.data.push(r.keys.map(function (k) { 
 
       return a[k]; 
 
      })); 
 
     }); 
 
     return r; 
 
    }(myColumnDefs); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

+0

只有一個數組沒有,但是我想要兩個數組...... var newarray = {a,b,c,d,e中,f}和VAR mysecondarray = [ {HH,hhjk,GGH,HVH,NULL}, {DD,GG,空,納米,RR,JJ},.... ] –

+0

在'result.data '你有兩個數組作爲結果。 –

+0

@ W.PraneethMadusanka,請注意,您不能以這種方式複製對象'{hh,hhjk,ggh,hvh,null}'。如果你想要兩個單獨的數組 - 使用Nina的'result'對象的部分:'var keys_arr = result ['keys']; var new_arr = result ['data']'; – RomanPerekhrest