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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值