js的数组的升维


升维

将一个一维数组变成二维数组
例如将一个数组将相同类型的数组合在一起


一、如一个这样的一维数组

 var arr = [
        { type: '电子产品', name: ' iPhone', price: 8888 },
        { type: '家具', name: '桌子', price: 100 },
        { type: '食品', name: '瓜子', price: 10 },
        { type: '家具', name: '椅子', price: 380 }]
    

根据类别type升为二维数组


二、先遍历,再判断

原理:

如果是第一次出现这个type的时候就将这个数据添加进入,
如果不是第一次添加有重复名字 ,
判断是哪一个type然后在这个type的基础上追加进入

代码如下(示例):

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /*数组升维:把-维数组变成二维数组*/
    //需求:
    // 将下列数组arr, 根据类别type升为二维数组
    vararr = [
        { type: '电子产品', name: ' iPhone', price: 8888 },
        { type: '家具', name: '桌子', price: 100 },
        { type: '食品', name: '瓜子', price: 10 },
        { type: '家具', name: '椅子', price: 380 }]
    
      
        var obj = {};//检测type有没有重复的
var arrNew = []; //升级后的二维数组
//1.要把type给去重,就是找出这里面所有的产品类型出来. 
//遍历这个arr-维数组

arr.forEach(v=>{
    if (obj[v.type] == undefined) { //第 一次出现这个产品类型
        obj[v.type] = 1;
        //把当前遍历出来的这个数据存进arrNew中
        arrNew.push({
            type: v.type,
            data: [v]
        });
    } else { //说明这个产品的类型不是第一次出现.
        //判断当前这个v是属于arrNew中的哪一类产品。然后加进这-类产品的da
        arrNew.forEach((v2, j) => {
            if (v.type == v2.type) {
                arrNew[j].data.push(v);
            }
        });
    }
})

    console.log(arrNew);

效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值