2014-01-21 87 views
1

如何才能在javascript中展現這一點?用多維數據平展javascript數組

[ 
    [ task: 2 ], 
    [ status: 'REFUND' ], 
    [], 
    [ amount: 872.2 ] 
] 

喜歡的東西:

[task: 2, status: 'REFUND', amount: 872.2] 

試了幾個選項,包括Array.prototype.reduce(),但我沒有工作。

+0

http://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays-in-javascript – Zhihao

+1

你的意思是{任務:2}等。 對 ? – tomdemuyt

+0

沒有tomdemuyt。我從array.push()獲得如上所示: var a = []; var b = []; var c = []; a [task] = 2; b [status] ='REFUND'; (b) 由於某種原因,我不能把它們放在一個變量中。它們來自不同的功能。 –

回答

1

您可以使用join()

一個很好的起點:

array[0] = array[0].join(", "); 
1

可以使用underscore.js

var u = require('underscore'); 
u.reduce(a, function(memo, item) { 
    var o = {}; 
    u.each(memo, function(v, k) { 
     o[k] = v; 
    }); 
    u.each(item, function(v, k) { 
     o[k] = v; 
    }); 
    return o; 
}); 


輸入:

[ 
    { task: 2 }, 
    { status: 'REFUND' }, 
    {}, 
    { amount: 872.2 } 
] 

輸出:

{ 
    task: 2, 
    status: 'REFUND', 
    amount: 872.2 
} 
+0

不要強調有平坦的方法嗎? –

+0

下劃線有一個扁平的方法。但在這種情況下你不能使用它。如果它是一個數組的數組,它會起作用。但是由於它的一個對象_.flatten的數組會返回輸入本身。 – Ali

0

您的語法無效;在對象文字之外不允許有:

var arr = [ 
    [{task: 2}],[{status: 'REFUND'}],[],[{amount: 872.2}] 
]; 

要扁平化的陣列,可以使用通用的reduce

var result = arr.reduce(function(a,b) { 
    return a.concat(b) 
}); //result.length === 3 

你的結果包含3個元素[]被過濾掉

reduceECMAScript的第5版的一部分。確保您的瀏覽器支持它。

0

請檢查這一個。

var a = [], b = [],c = [],d=[]; 
a['task'] = 2; 
b['status'] = 'REFUND'; 
d['amount']= 872.2 

c.push(a); 
c.push(b); 
c.push(d) 
var arr = []; 
console.log(c) 

for(var key in c){ 
    //console.log(Object.keys(c[key]),c[key][Object.keys(c[key])]); 
    arr[Object.keys(c[key])]=c[key][Object.keys(c[key])]; 
    } 

console.log(arr) // please see the console. 

這裏是plunker