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]};
});
}
}
}

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

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

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

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

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

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

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

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

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

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

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

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

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

js对数组处理(数组里边相同元素提取成map)的更多相关文章

  1. JS对象 Array 数组对象 数组对象是一个对象的集合,里边的对象可以是不同类型的。数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的

    Array 数组对象 数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个"下标",用来表示它在数组中的位置,是从零开始的 数组定义的方法: 1. 定 ...

  2. 关于DOM中的model(将元素转成对象进行操作)

    DOM document (html, xml) object 将文档中的HTML元素转成js的对象 通过ID找到文档的元素转成js对象 var obj = document.getElementBy ...

  3. JS数组常用函数以及查找数组中是否有重复元素的三种常用方法

    阅读目录: DS01:常用的查找数组中是否有重复元素的三种方法 DS02:常用的JS函数集锦 DS01.常用的查找数组中是否有重复元素的三种方法  1. var ary = new Array(&qu ...

  4. js随机从数组中取出几个元素

    JS如何从一个数组中随机取出一个元素或者几个元素. 假如数组为 var items = ['1','2','4','5','6','7','8','9','10']; 1.从数组items中随机取出一 ...

  5. js获取对象、数组的实际长度,元素实际个数

    /*获取对象.数组的长度.元素个数 *@param obj 要计算长度的元素,可以为object.array.string */ function count(obj){ var objType = ...

  6. JS 比较两个数组是否相等 是否拥有相同元素

    Javascript怎么比较两个数组是否相同?JS怎么比较两个数组是否有完全相同的元素?Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,以下两行JS代码都 ...

  7. Js数组里剔除指定的元素(不是指定的位置)

    s数组里删除指定的元素(不是指定的位置)之前一直是做后端的,从来也没有写过js,但是却一直想学学,也只是基于兴趣而已!现在到了这个公司,确实大量的写js.但也一直都是没有系统的去看过js!都是搞什么查 ...

  8. JS如何去掉一个数组的重复元素 (数组去重)

    一.思路如下: 定义一个新数组,将老数组遍历一遍,再进行判断,如果新数组里面没有老数组的元素就添加,否则就不添加,最终输出整个新数组. 二.代码如下: var arr = ["a" ...

  9. JS比较两个数组是否相等 是否拥有相同元素

    Javascript怎么比较两个数组是否相同?JS怎么比较两个数组是否有完全相同的元素?Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,以下两行JS代码都 ...

随机推荐

  1. ByteBuf(图解1)

    目录 源码工程 写在前面 Netty ByteBuf 优势 手动获取与释放ByteBuf 自动获取和释放 ByteBuf 方式一:TailHandler 自动释放 方式二:SimpleChannelI ...

  2. 将本地项目上传到git远程库(初始化)

    准备条件: 首先,有一个远程仓库地址,本文中的地址为“http://git.xxxxxxxx.net.cn/jacun/imagegrap.git”; 第一步:在本地创建初始化仓库: git init ...

  3. 20170316 ABAP注意点

    1.debug 时在MODIFY db from table 后数据便提交了: 一般情况下,更新数据库需要commit,但debug会自动commit,程序结束也会自动commit. 2.使用at n ...

  4. POj 3253 Fence Repair(修农场栅栏,锯木板)(小根堆 + 哈弗曼建树得最小权值思想 )

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 28359   Accepted: 9213 Des ...

  5. Bestcoder round 18----B题(一元三次方程确定区间的最大值(包含极值比较))

    Math Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  6. SystemV和BSD的区别

    目前,Unix操作系统不管其内核如何,其操作风格上主要分为SystemV(目前一般采用其第4个版本SVR4)和BSD两种.其代表操作系统本别是Solaris和FreeBSD.当然,在SunOS4(So ...

  7. 坡道定点停车30cm

    坡道定点停车与起步是科目二五项必考之一,想要顺利通过该项考试,学员需要掌握两个要点,一个是车身距离右侧边线30cm以内的距离,一个是定点时机.本期,元贝小编先和大家分享半坡起步右边30公分怎么看.   ...

  8. 基于BASYS2的VHDL程序与烧写——按键消抖程序

    请尊重作者版权,转载请注明源地址http://www.cnblogs.com/connorzx/p/3548364.html 按键在按下的过程中通常会产生一段时间的抖动,为了消除这种抖动,一般采取两种 ...

  9. java-线程(一)

    1.进程与线程的区别 多个进程的内部数据和状态都是完全独立的,而多个线程是共享一块内存空间和一组系统资源,有可能互相影响.多线程程序比多进程程序需要更少的管理费用.进程是重量级的任务,需要分配他们的单 ...

  10. 如何查看智能手机的IP地址

      1.  外网IP IP地址可简单分为两类.外网IP或称公网IP是用来在Internet上唯一标识你的设备的.如果你通过GPRS或者3G技术接入互联网的话(通过运营商网络),那么你也可以通过下面的方 ...