js对数组处理(数组里边相同元素提取成map)

1.数组里边相同元素提取成map,并以‘’,‘’分隔

  例如:var arr = [{a:"xx",b:''xxx''},{a:"xxx",b:''xxxxx''},.....];

  想要的结果 a = {''xx'',''xxx'',.....};  b = {''xxx'',''xxxxx'',.....}; 

  var a = arr.map(function(item){

    return item.a;

  }).join(',');

  以上同理b;

2.从数组中找出与当前id匹配的对象

  例如:var arr = [{obja},{objb},{objc},....];

  假设当前id为currentId 与arr里边的某一个对象的id匹配

  则:当前匹配的对象

  currentObj = $filter('filter')(arr,function(item){

    return currentId === item.id;

  })[0];

  或者用underscore.js里边的_.filter方法

  currentObj = _.filter(arr,function(item){

    return currentId === item.id;

  })[0];

3.两个数组值一一对应(对两个input输入值处理成数组并一一对应处理)

 例如:var item.account=1;2;2;5; var item.deployPath=5;6;7,item.packageConfigDeployViews是数组有值修改/没值添加

 下面实例是以那个数组长度长作为对应条件

if(item.packageConfigDeployViews){
                var account = item.account.split(';');
                var deployPath = item.deployPath.split(';');
               if(account.length>=deployPath.length){
                   item.packageConfigDeployViews=_.map(account,function(val,index){
                        var obj=item.packageConfigDeployViews[index];
                        if(!_.isEmpty(obj)){
                            obj.account=val;
                            obj.deployPath=deployPath[index];
                            return obj;
                        }else{
                            return {account:val,deployPath:deployPath[index]};
                        }

                    });
                }else{
                    item.packageConfigDeployViews=_.map(deployPath,function(val,index){
                        var obj=item.packageConfigDeployViews[index];
                        if(!_.isEmpty(obj)){
                            obj.deployPath=val;
                            obj.account=account[index];
                            return obj;
                        }else{
                            return {deployPath:val,account:account[index]};
                        }
                    });
                }
            }else{
                if(!_.isEmpty(item.account)&&(!_.isEmpty(item.deployPath))){
                    var account = item.account.split(';');
                    var deployPath = item.deployPath.split(';');
                    if(account.length>=deployPath.length){
                       item['packageConfigDeployViews']=_.map(account,function(val,index){
                            return {account:val,deployPath:deployPath[index]};
                        });
                    }else{
                        item['packageConfigDeployViews']=_.map(deployPath,function(val,index){
                            return {deployPath:val,account:account[index]};
                        });
                    }
                }
            }
View Code

 3.数组处理的一些常用js方法

concat() :连接两个或多个数组。

every() :检测数值元素的每个元素是否都复合条件。

fill() :使用一个固定值来填充数组。

indexOf() :搜索数组中的元素,并返回在数组中的位置。大于-1返回true。

join() : 把数组所有元素放入一个字符串。

map() : 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

pop() :删除数组的最后一个元素并返回删除元素。与之对应的 shift() 删除数组第一个元素并返回删除元素。

reverse() :反转数组的顺序。

slice(start,end):已有数组中返回指定元素,不包含start和end元素。

some() :检测数组中是否有元素符合指定条件。

splice() :从数组中删除指定元素。

trim():删除左右两边空格。

原文地址:https://www.cnblogs.com/shixy1617/p/7382158.html