var array=[ {id:1,name:'小明',sex:'男'}, {id:2,name:'小刚',sex:'男'}, {id:3,name:'小红',sex:'女'}, {id:4,name:'小花',sex:'女'}, {id:5,name:'小甜甜',sex:'女'}, ] var obj={},newArr=[]; array.forEach(function(item,suffix){ //根据对象的属性是唯一的,将值作为对象的属性名 if(!obj[item.sex]){ var arr=[]; arr.push(item); newArr.push(arr); obj[item.sex]=item; }else{ newArr.forEach(function(value,index){ //如果已经存在 就循环新组的值将值插入属性相同的数组里 为了防止重复添加 只要和第一个比较就可以了 if(value[0].sex==item.sex){ value.push(item) } }) } }) console.log(obj); console.log(newArr)
来源:https://www.cnblogs.com/yuzihong/p/10495511.html
方法二:
var arr=[{name:2,id:3},{name:2,id:4},{name:3,id:5},{name:3,id:6},{name:1,id:1},{name:1,id:2}]; // 传入一个数组 // 按照特定方式格式化 function sortArr(arr, str) { var _arr = [], _t = [], // 临时的变量 _tmp; // 按照特定的参数将数组排序将具有相同值得排在一起 arr = arr.sort(function(a, b) { var s = a[str], t = b[str]; return s < t ? -1 : 1; }); if ( arr.length ){ _tmp = arr[0][str]; } // console.log( arr ); // 将相同类别的对象添加到统一个数组 for (var i in arr) { console.log( _tmp); if ( arr[i][str] === _tmp ){ console.log(_tmp) _t.push( arr[i] ); } else { _tmp = arr[i][str]; _arr.push( _t ); _t = [arr[i]]; } } // 将最后的内容推出新数组 _arr.push( _t ); return _arr; } sortArr( arr, 'name');
来源:https://blog.csdn.net/wqnmlgbsz/article/details/118767609
扩展:
数组对象相同的key值合并,并且把对应的id放到一个数组
https://blog.csdn.net/qq_43765727/article/details/98485490