zoukankan      html  css  js  c++  java
  • 将数组里某个属性相同的对象合并成一个数组

    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

     

  • 相关阅读:
    mac登录界面的背景壁纸图片位置
    【转载】MAC系统修改帐号短名和个人文件夹名称
    ios 6.x系统UITextView 设置为密码输入无效的问题
    一个简单的果冻弹动动画
    ios中的自动释放池
    ios 静态库联合调试
    【转】IOS制作静态库
    objective-c中为什么不能实现多重继承及如何变通实现
    回调中释放自己会不会导致崩溃?
    【转载】Objective-C runtime 消息机制
  • 原文地址:https://www.cnblogs.com/sherryweb/p/15246104.html
Copyright © 2011-2022 走看看