遍历对象数组相同项分割出来
有些需求比如设置部门时候;相同的部门的要放到一起展示,这个时候需要把部门分类弄个数组
如下代码:
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进去
然后没有 就给对象增加这个部门属性在赋值;