【问题标题】:How to get single array from multiple array in javascript [duplicate]如何在javascript中从多个数组中获取单个数组[重复]
【发布时间】:2017-07-05 06:19:13
【问题描述】:

我有这样的数组

   var arr = [
                [ {"c": 1},{"d": 2} ],
                [ {"c": 2},{"d": 3} ]
             ]

我想更改为(仅通过 javascript)

var newArr  = [{"c": 1},{"d": 2},{"c": 2},{"d": 3}]

我已经通过地图尝试过,但没有得到预期的输出。

【问题讨论】:

  • 请向我们展示您的尝试(您的地图尝试)
  • 您想将数组的数组展平为单个数组
  • 带递归函数,测试isArray是否为数组元素

标签: javascript


【解决方案1】:

您可以使用reduce() 和传播语法。

 var arr = [
  [ {"c": 1},{"d": 2} ],
  [ {"c": 2},{"d": 3} ]
]

var result = arr.reduce((r, e) => (r.push(...e), r), [])
console.log(result)

【讨论】:

  • 我希望我能不止一次地投票,漂亮的答案!
【解决方案2】:

在纯 JavaScript 中,您可以使用 Array.portotype.forEach 来执行此操作。

var arr = [
                [ {"c": 1},{"d": 2} ],
                [ {"c": 2},{"d": 3} ]
             ];
             
var newArray = [];

arr.forEach(function(e){
	e.forEach(function(e1){
		newArray.push(e1);
	});
})

console.log(newArray);

使用这个..

【讨论】:

    【解决方案3】:

    您可以将Array#reduceArray#concat 一起使用。

    var arr = [[{ c: 1 }, { d: 2 }], [{ c: 2 }, { d: 3 }]],
        result = arr.reduce((r, a) => r.concat(a), []);
    
    console.log(result)

    ES5

    var arr = [[{ c: 1 }, { d: 2 }], [{ c: 2 }, { d: 3 }]],
        result = arr.reduce(function (r, a) { return r.concat(a); }, []);
    
    console.log(result)

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 2016-09-27
      • 2018-07-05
      • 1970-01-01
      相关资源
      最近更新 更多