zoukankan      html  css  js  c++  java
  • 数组分离

    有这样一种需求,如何将一个数组,根据数组中的某一个键值,将这个原有数组, “分类”  组成一个新的数组?

    话不多说,直入主题  ^ _ ^ !:

    原数组:

    oldArr = [{"cateName":"硬盘","cateIndex":0,"goodsId":"1","goodsAttr":"三星/机械硬盘"},
    {"cateName":"硬盘","cateIndex":0,"goodsId":"4","goodsAttr":"三星/固态硬盘"},
    {"cateName":"硬盘","cateIndex":0,"goodsId":"5","goodsAttr":"三星/机械硬盘"},
    {"cateName":"内存","cateIndex":1,"goodsId":"2","goodsAttr":"金士顿/DDR11"},
    {"cateName":"内存","cateIndex":1,"goodsId":"6","goodsAttr":"金士顿/DDR11"},
    {"cateName":"主板","cateIndex":2,"goodsId":"59","goodsAttr":"123"},
    {"cateName":"显示器","cateIndex":3,"goodsId":"64","goodsAttr":"123223"}];

    期望结果:
    newArr = [[{"cateName": "硬盘", "cateIndex": 0, "goodsId": "1", "goodsAttr": "三星/机械硬盘"},
          {"cateName": "硬盘", "cateIndex": 0, "goodsId": "4", "goodsAttr": "三星/固态硬盘"},
          {"cateName": "硬盘", "cateIndex": 0, "goodsId": "5", "goodsAttr": "三星/机械硬盘"}],
    [{"cateName": "内存", "cateIndex": 1, "goodsId": "2", "goodsAttr": "金士顿/DDR11"},
          {"cateName": "内存", "cateIndex": 1, "goodsId": "6", "goodsAttr": "金士顿/DDR11"}],
    [{"cateName": "主板", "cateIndex": 2, "goodsId": "59", "goodsAttr": "123"}],
    [{"cateName": "显示器", "cateIndex": 3, "goodsId": "64", "goodsAttr": "123223"}]]


    接下来,就是 magic time:
    // 数组根据某一值分成多个数组
    function likSeparateArr(arr, str) {
    var strArr = [];
    $.each(arr, function (i, v) {
    if ($.inArray(v[str], strArr) == -1) {
    strArr.push(v[str]);
    }
    });
    var newArr = [];
    $.each(strArr, function (i, v) {
    var childrenArr = [];
    $.each(arr, function (i2, v2) {
    if (v2[str] == v) {
    childrenArr.push(v2);
    }
    });
    newArr.push({
    parent: v,
    children: childrenArr
    })
    });
    return newArr;
    }

    最终结果如下:
    [
    {
    "parent": "硬盘",
    "children": [
    {"cateName": "硬盘", "cateIndex": 0, "goodsId": "1", "goodsAttr": "三星/机械硬盘"},
    {"cateName": "硬盘", "cateIndex": 0, "goodsId": "4", "goodsAttr": "三星/固态硬盘"},
    {"cateName": "硬盘", "cateIndex": 0, "goodsId": "5", "goodsAttr": "三星/机械硬盘"}
    ]
    },
    {
    "parent": "内存",
    "children": [
    {"cateName": "内存", "cateIndex": 1, "goodsId": "2", "goodsAttr": "金士顿/DDR11"},
    {"cateName": "内存", "cateIndex": 1, "goodsId": "6", "goodsAttr": "金士顿/DDR11"}
    ]
    },
    {
    "parent": "主板",
    "children": [
    {"cateName": "主板", "cateIndex": 2, "goodsId": "59", "goodsAttr": "123"}
    ]
    },
    {
    "parent": "显示器",
    "children": [
    {"cateName": "显示器", "cateIndex": 3, "goodsId": "64", "goodsAttr": "123223"}
    ]
    }
    ]


    有任何疑问或者建议,就给我留言吧!
    author:Lik
    Endeavoring to powerless, struggling to move yourself.
  • 相关阅读:
    经典SQL语句大全
    《构建高性能Web站点》观后感
    网搜索引擎架构设计
    使用Windows系统的几个好的习惯
    静态页面对seo优化之详解
    让您SEO学习时间缩短一半的高阶秘籍
    java链表
    GAE 数据存储——事务
    GAE 博客——B3log Solo 0.2.0 发布了!
    Wine 1.3.7 发布
  • 原文地址:https://www.cnblogs.com/likwin/p/7095840.html
Copyright © 2011-2022 走看看