如何才能在javascript中展現這一點?用多維數據平展javascript數組
[
[ task: 2 ],
[ status: 'REFUND' ],
[],
[ amount: 872.2 ]
]
喜歡的東西:
[task: 2, status: 'REFUND', amount: 872.2]
試了幾個選項,包括Array.prototype.reduce(),但我沒有工作。
如何才能在javascript中展現這一點?用多維數據平展javascript數組
[
[ task: 2 ],
[ status: 'REFUND' ],
[],
[ amount: 872.2 ]
]
喜歡的東西:
[task: 2, status: 'REFUND', amount: 872.2]
試了幾個選項,包括Array.prototype.reduce(),但我沒有工作。
您可以使用join()
一個很好的起點:
array[0] = array[0].join(", ");
可以使用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
}
不要強調有平坦的方法嗎? –
下劃線有一個扁平的方法。但在這種情況下你不能使用它。如果它是一個數組的數組,它會起作用。但是由於它的一個對象_.flatten的數組會返回輸入本身。 – Ali
您的語法無效;在對象文字之外不允許有:
。
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個元素[]
被過濾掉
reduce
是ECMAScript的第5版的一部分。確保您的瀏覽器支持它。
請檢查這一個。
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
http://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays-in-javascript – Zhihao
你的意思是{任務:2}等。 對 ? – tomdemuyt
沒有tomdemuyt。我從array.push()獲得如上所示: var a = []; var b = []; var c = []; a [task] = 2; b [status] ='REFUND'; (b) 由於某種原因,我不能把它們放在一個變量中。它們來自不同的功能。 –