如何在javascript中压扁这个?
[
[ task: 2 ],
[ status: 'REFUND' ],
[],
[ amount: 872.2 ]
]
类似于:
[task: 2, status: 'REFUND', amount: 872.2]
尝试了几个选项,包括Array.prototype.reduce(),但对我没用。
答案 0 :(得分:1)
您可以使用join()
一个很好的起点:
array[0] = array[0].join(", ");
答案 1 :(得分: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
}
答案 2 :(得分:0)
您的语法无效; 1}}在对象文字之外是不允许的。
:
要展平您的阵列,请使用多才多艺的var arr = [
[{task: 2}],[{status: 'REFUND'}],[],[{amount: 872.2}]
];
:
reduce
您的结果包含3个元素,因为var result = arr.reduce(function(a,b) {
return a.concat(b)
}); //result.length === 3
已过滤
[]
是 ECMAScript第5版的一部分。确保您的浏览器支持它。
答案 3 :(得分: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