2016-03-15 129 views
3

在我的數組是這樣如何過濾數據,在陣列循環

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}, 

       {dd,gg,nm,rr,jj},.... 
] 
+1

'{HH,hhjk,GGH,HVH}'既不是有效的數組不是有效的JSON – gurvinder372

+0

請澄清正是你需要的,並提供了一個更加現實和有效的例子。否則你會得到downvoted:s – amd

回答

1

您可以使用map()indexOf(),做這樣的事情

var myColumnDefs = [ 
 
    { 
 
    a: "hh", 
 
    b: "hh", 
 
    c: "jk", 
 
    d: "ggh", 
 
    e: "hvh" 
 
    }, 
 

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

 
var arr1 = [], 
 
    arr2 = []; 
 

 
// iterate over `myColumnDefs` array and generate value array 
 
arr2 = myColumnDefs.map(function(v, i) { 
 
    // get keys from object 
 
    var keys = Object.keys(v); 
 
    // iterate over key values and generate the value array and then return 
 
    return keys.map(function(k) { 
 
    // check key value is in `arr1`, push if not 
 
    if (arr1.indexOf(k) == -1) 
 
     arr1.push(k); 
 
    // return corresponding value based on key 
 
    return v[k]; 
 
    }); 
 
}); 
 

 
document.write('First Array : <pre>' + JSON.stringify(arr1, null, 3) + '</pre> Second Array : <pre>' + JSON.stringify(arr2, null, 3) + '</pre>');

1

假設你想要的結果的陣列,那麼這應該工作。結果是進一步處理的對象。

var myColumnDefs = [{ a: "hh", b: "hh", c: "jk", d: "ggh", e: "hvh" }, { a: "dd", b: "gg", d: "nn", e: "rr", f: "jj" }], 
 
    result = function (array) { 
 
     var r = { keys: [], data: [] }; 
 
     array.forEach(function (a) { 
 
      r.data.push(Object.keys(a).map(function (k) { 
 
       !~r.keys.indexOf(k) && r.keys.push(k); 
 
       return a[k]; 
 
      })); 
 
     }); 
 
     return r; 
 
    }(myColumnDefs); 
 

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

0

假設mysecondarray由具有值的陣列以相同的順序數組。

嘗試

var columns = {}; //newarray 
var values = []; //mysecondarray 
myColumnDefs.forEach(function(value){ 

    var arr = []; 
    for (var key in value) 
    { 
     columns[key] = true; 
     arr.push(value[key]); 
    } 
    values.push(arr); 

}) 
console.log("columns are " + JSON.stringify(Object(columns).keys, 0, 4)); 
console.log("values are " + JSON.stringify(values, 0, 4));