js复习

js 标准二维数组变一维数组的方法

2019-06-22  本文已影响0人  椋椋夜色

<!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>

上一篇下一篇

猜你喜欢

热点阅读