哪一个二维数组获得一维是最短的方法?

时间:2019-05-07 04:43:28

标签: javascript

我有这个数组

[[1,2,3][4,5,6][7,8,9]]

如何从这种方式获得

[1,2,3,4,5,6,7,8,9]

不使用Array.map

5 个答案:

答案 0 :(得分:1)

您可以这样做:

const data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
const result = data.reduce((a, c) => a.concat(c), []);

console.log(result);

答案 1 :(得分:0)

使用Array#flatMap方法展平返回的数组。

let data = [
  [1, 2, 3],[4, 5, 6],[7, 8, 9]
];


console.log(data.flatMap(a => a))


或使用Array#reduce方法迭代并简化为单个数组。

let data = [
  [1, 2, 3],[4, 5, 6],[7, 8, 9]
];


console.log(data.reduce((arr, a) => [...arr, ...a]), [])

或者甚至可以使用为此目的创建的内置Array#flat方法。如果您想添加嵌套数组,则默认情况下指定depth argument1

let data = [
  [1, 2, 3],[4, 5, 6],[7, 8, 9]
];


console.log(data.flat())

答案 2 :(得分:0)

您可以使用数组flat

let k = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

let m = k.flat();
console.log(m)

答案 3 :(得分:0)

您可以使用flat()

const arr = [[1,2,3],[4,5,6],[7,8,9]]
console.log(arr.flat())

如果您不想使用flat(),则可以使用push()和散布运算符。

const arr = [[1,2,3],[4,5,6],[7,8,9]]
const res = [];
arr.forEach(x => res.push(...x))
console.log(res)

答案 4 :(得分:0)

您可以使用Array​.prototype​.flat()

  

flat()方法将创建一个新数组,其中所有子数组元素都将递归地连接到其中,直到指定的深度为止。

var arr = [[1,2,3],[4,5,6],[7,8,9]];
var res = arr.flat();
console.log(res);