<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title> js 标准二维数组变一维数组的方法 </title>
reduce()使用方法 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
concat()方法使用 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/concat
</head>
<body>
<p>
一维数组容易理解 就是一个大箱子 里面有许多元素 <br>
如a[3] 这就是一个装有三个元素的箱子 <br>
二维数组 就是一维数组的数组 <br>
如 a[3][4] 有三个装着四个元素的箱子 <br>
</p>
<p>
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue) <br>
function(total,currentValue, index,arr) 必需。用于执行每个数组元素的函数。 <br>
函数参数: 参数 描述 <br>
total 必需。初始值, 或者计算结束后的返回值。 <br>
currentValue 必需。当前元素 <br>
currentIndex 可选。当前元素的索引 <br>
arr 可选。当前元素所属的数组对象。 <br>
<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce">reduce()使用方法</a> <br>
concat() 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。<br>
<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/concat">concat()
方法使用</a> <br>
</p>
<script>
// 新建一个二维数组
var arr1 = [[0, 1], [2, 3], [4, 5]];
// 1.二维数组转一维数组
// 利用es5的arr.reduce(callback[, initialValue])实现
var arr2 = arr1.reduce(function (a, b) {
return a.concat(b)
});
console.log(arr2); // 输出 : (6) [0, 1, 2, 3, 4, 5]
// 2.二维数组转一维数组
// 利用es6 优点: 多维数组也可以
function flatten(arr1) {
return [].concat(...arr1.map(x => Array.isArray(x) ? flatten(x) : x))
}
var arr2 = flatten(arr1);
console.log(arr2); // 输出 : (6) [0, 1, 2, 3, 4, 5]
// 多维数组转一维数组
var arr3 = [ [1, 2], 3, [ [ [4], 5] ],[6, 7]]
function flatten(arr3) {
return [].concat(...arr3.map(x => Array.isArray(x) ? flatten(x) : x))
}
var arr4 = flatten(arr3);
console.log(arr4); // 输出 : (7) [1, 2, 3, 4, 5, 6, 7]
// 3.二维数组转一维数组 利用apply实现
var arr5 = [].concat.apply([], arr1);
console.log(arr5); // 输出 : (6) [0, 1, 2, 3, 4, 5]
// 4.二维数组转一维数组
// 通过将数组转变成字符串,利用str.split(',')实现。缺点是数组元素都变字符串了
var arr6 = (arr1 + '').split(',');
var arr6 = arr1.toString().split(',');
var arr6 = arr1.join().split(',');
console.log(arr6); // 输出 : (6) ["0", "1", "2", "3", "4", "5"]
</script>
</body>
</html>