用多维数据展开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; });
input:
[ { task: 2 }, { status: 'REFUND' }, {}, { amount: 872.2 } ]
输出:
{ task: 2, status: 'REFUND', amount: 872.2 }
你的语法是无效的; 没有:
允许在对象字面之外。
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第五版的一部分。 确保您的浏览器支持它。
请检查这一个。
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.
这里是抢劫者