一起学习网 一起学习网


JS 二维数组转一维数组

网络编程 JS 二维数组转一维数组 09-05

JS 二维数组转一维数组

一、需求二、分析1. 方法一(ES5)2. 方法二(ES6)3. 方法三(ES6)3. 方法四(ES5)4. 特殊说明:flat()方法会移除数组中的空项。但undefined、null仍会保留。

一、需求

在日常开发中,我们可能会遇到返回的数据不能直接使用,而数据提供者只给你传递二维数据格式的数据,这个时候就需要我们做转换,下面是总结的一些方法,可供参考

二、分析

1. 方法一(ES5)

利用es5的arr.reduce(callback[, initialValue])实现
var arr1 = [[0, 1], [2, 3], [4, 5]];var arr2 = arr1.reduce(function (a, b) { return a.concat(b)} );// arr2 [0, 1, 2, 3, 4, 5]

2. 方法二(ES6)

可以使用Array.prototype.flat()方法来将二维数组转为一维数组。
const arr2d = [[1, 2], [3, 4], [5, 6]];const arr1d = arr2d.flat();console.log(arr1d); // [1, 2, 3, 4, 5, 6]

3. 方法三(ES6)

如果想要将多维数组转为一维数组,可以使用Array.prototype.flat(depth)方法,传入一个数值参数 depth 来指定要将数组展开到多少层。
const arr3d = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]];const arr1d = arr3d.flat(2);console.log(arr1d); // [1, 2, 3, 4, 5, 6, 7, 8]

3. 方法四(ES5)

以上两个方法在 ES6 中引入,如果需要兼容旧版本浏览器,可以使用以下 polyfill 来实现:
if (!Array.prototype.flat) {Array.prototype.flat = function(depth) {var flattened = [];(function flat(array, depth) {for (var i = 0; i 

              

编辑:一起学习网

标签:数组,方法,可以使用,数据,多维