使用多维数据展平javascript数组

时间:2014-01-21 15:13:43

标签: javascript arrays node.js object

如何在javascript中压扁这个?

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

类似于:

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

尝试了几个选项,包括Array.prototype.reduce(),但对我没用。

4 个答案:

答案 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)

您的语法无效;

:

要展平您的阵列,请使用多才多艺的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