遍历对象数组相同项分割出来

有些需求比如设置部门时候;相同的部门的要放到一起展示,这个时候需要把部门分类弄个数组

如下代码:
var data=[
{name:'领导',age:18},
{name:'领导',age:19},
{name:'领导',age:20},
{name:'小兵',age:20},
{name:'小兵',age:22},
{name:'cto',age:15},
];
这个数据差不多就是部门的数据简化了,name字段就是部门的名字,部门的可以是字符串类型,也有用数字类型存部门编号的,看后台数据库怎么设计了 这个例子用字符串表示,好理解;
一://笨方法 
var data=[
        {name:'领导',age:18},
        {name:'领导',age:19},
        {name:'领导',age:20},
        {name:'小兵',age:20},
        {name:'小兵',age:22},
        {name:'cto',age:15},
    ];
    var ld=[];
    var xb=[];
    var cto=[];
    for(var i in data){
        var node=data[i];
        switch (node.name){
            case '领导':
                ld.push(node);
            break;
            case '小兵':
                xb.push(node);
                break;
            case 'cto':
                cto.push(node);
                break;
        }
    }
console.log(ld,xb,cto);

  事先知道都有什么部门了 然后遍历取一个个判断,但是这个太low了 不智能;

二:相对智能写法
var json={};
    for(var i in data){
        var node=data[i];
        if(json[node.name]){
            json[node.name].push(node);
        }else {
            json[node.name]=[node];
        }
    }
console.log(json);

  

思路:先声明这个对象, 遍历的数组的部门字段为对象的属性,判断如果有 就是把数据push进去
然后没有 就给对象增加这个部门属性在赋值;
posted @ 2017-06-12 13:52  fstgshow  阅读(827)  评论(0编辑  收藏  举报