Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用多维数据展平javascript数组_Javascript_Arrays_Node.js_Object - Fatal编程技术网

用多维数据展平javascript数组

用多维数据展平javascript数组,javascript,arrays,node.js,object,Javascript,Arrays,Node.js,Object,如何在javascript中实现这一点 [ [ task: 2 ], [ status: 'REFUND' ], [], [ amount: 872.2 ] ] 例如: [task: 2, status: 'REFUND', amount: 872.2] 尝试了几个选项,包括Array.prototype.reduce(),但对我无效。您可以使用join() 一个好的起点: array[0] = array[0].join(", "); 可以使用下划线.j

如何在javascript中实现这一点

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

[task: 2, status: 'REFUND', amount: 872.2]
尝试了几个选项,包括Array.prototype.reduce(),但对我无效。

您可以使用
join()

一个好的起点:

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

可以使用下划线.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 
}

你的语法是无效的;对象文本之外不允许有

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.

这是

你的意思是{task:2}等等,对吗?不。我从array.push()中得到上面的结果,如下所示:var a=[];var b=[];var c=[];a[任务]=2;b[状态]=“退款”;c、 由于某种原因,我不能把它们放在一个变量中。它们来自不同的函数。下划线没有展平方法吗?下划线有展平方法。但在这种情况下不能使用它。如果它是一个数组中的一个数组,它就会工作。但是由于它是一个对象数组,所以flatte将返回输入本身。
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.