javascript:尝试将数组展平一级

javascript:尝试将数组展平一级,javascript,flatten,Javascript,Flatten,我正在尝试编写一个函数来展平数组。我有一部分功能正在工作,另一半需要帮助 flatten: function(anyArray, singleLevel) { if (singleLevel == true) { flatArray = Array.prototype.concat.apply([], anyArray); return flatArray; } flatArray = Array.prototype.concat.apply([], anyA

我正在尝试编写一个函数来展平数组。我有一部分功能正在工作,另一半需要帮助

flatten: function(anyArray, singleLevel) {
  if (singleLevel == true) {
      flatArray = Array.prototype.concat.apply([], anyArray);
      return flatArray;
  }
  flatArray = Array.prototype.concat.apply([], anyArray);
  if (flatArray.length != anyArray.length) {
      flatArray = someObject.array.flatten(flatArray);
  }
  return flatArray;
}
如果我打字

.flatten([[[1],[1,2,3,[4,5],4],[2,3]]], true);
我希望它只展平一层:

[[1],[1,2,3,[4,5],4],[2,3]]
需要一个或多个数组作为参数,其元素将被追加:

[1].concat([2, 3], [4]) // [1, 2, 3, 4]
因此,如果您正在使用,将使另一个级别变平:

[].concat.apply([1], [[2], [3]]) // === [1].concat([2], [3])

因此,您可以使用
push
而不是
concat
,或
call
(或直接调用)而不是
apply
,只获得一个展平级别。

如果您使用ES6/ES2015,您可以使用operator。像这样的


console.log(…[[1]、[1,2,3、[4,5]、[4]、[2,3]])
现代JavaScript允许我们使用各种技术非常轻松地处理这个问题

使用
Array.prototype.flat
-

const-arr=
[ [ 1 ], [ 2, 3, [ 4, 5, [ 6 ] ] ], [ 7, [ 8, 9 ] ] ]
常数弗拉塔=
arr.flat(1)//1为默认深度
log(JSON.stringify(arr))
log(JSON.stringify(flatArr))
// [[1],[2,3,[4,5,[6]]],[7,[8,9]]]

//[1,2,3、[4,5、[6]]、7、[8,9]]
我不认为多层平面在
[1][[1]]]