数组的升维和降维

1.数组的降维

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>

        /* 
        数组降维:把一个二维数组变成一维数组
        */

        //需求:将二维数组转为一维数组 ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
        var arr = [['a','b','c'],['d','e','f'],['g','h','i']]; 
        /* 解决方案
            (1)遍历arr中的每一个元素(一维数组)
            (2)使用concat连接到新数组中
        */
        var arr1 = [];
        for(var i = 0;i<arr.length;i++){
            //连接数组
            arr1 = arr1.concat(arr[i]);
        };
        console.log(arr1);//["a", "b", "c", "d", "e", "f", "g", "h", "i"]
        
    </script>
</body>
</html>

2.数组的升维

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        /* 数组升维:把一维数组变成二维数组 */

        //需求 : 将下列数组arr,根据类别type升为二维数组
        var arr = [
            {
                type: '家电',
                name: '空调',
                price: 5200
            },
              {
                type: '手机',
                name: 'iPhone',
                price: 7500
            },
            {
                type: '食品',
                name: '苹果',
                price: 8
            },
            {
                type: '家电',
                name: '洗衣机',
                price: 2500
            }, {
                type: '手机',
                name: '小米',
                price: 2100
            }, {
                type: '食品',
                name: '花生',
                price: 5
            }, {
                type: '食品',
                name: '牛奶',
                price: 50
            }
        ];

        /*
        解决方案: 
            1.创建空对象obj: 找出arr中type的种类和对应的数量 (利用对象属性名唯一的特点)
            2.创建空数组arr1 : 存储二维数组
            3.遍历arr,根据obj对象,将arr拆分成二维数组存入arr1中
        */
        //1.创建空对象: 找出arr中type的种类
        var obj = {};
        var arr1 = [];
        for (var i = 0; i < arr.length; i++) {
            var value = arr[i];
            if (obj[value.type] == undefined) {//第一次出现
                obj[value.type] = 1;//记录次数
                var tempArr = [value];//声明数组存储value
                arr1.push({ type: value.type, data: tempArr });
            } else {//第二次出现,检查这个type是arr1中第几个元素的type
                for (var j = 0; j < arr1.length; j++) {
                    var value1 = arr1[j];
                    if (value.type == value1.type) {
                        arr1[j].data.push(value);
                    }
                };
            }
        };
        console.log(obj);//{手机, 家电, 食品}
        console.log(arr1);
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值