一.数组添加、删除、替换、截取操作

1.arr.unshift(1)

在数组头部添加一个元素 1 (直接改变原数组,返回值为添加元素后数组的length)

2.arr.shift()

在数组的头部删除一个元素 (直接改变原来数组,返回值为删除的元素)

3.arr.push(1)

在数组末尾添加一个元素 1(直接改变原数组,返回值为添加元素后数组的length)

4.arr.pop()

删除数组最后一个元素。(直接改变原数组,返回值为删除的位数 1 )

5.arr.splice(index,number,exchange)

删除或替换元素。(改变原数组,返回值为删除或替换掉的元素组成的数组。index是删除或替换的位置为必填,number是要删除或替换为位数为必填,exchange为要替换的值为选填且可为多个值。)

6.arr.slice(start,end);

截取数组 (不改变原数组,返回值为截取的数组,start开始窃取,到end之前一个元素,注意:end不考虑在截取的范围内)

特殊用法:深度拷贝数组 let a = arr.slice(0);

let arr = [1,2,3,4,5,6];
let a = arr.slice(2); //从index 2位置截取到数组末尾。a为 [3,4,5,6] *注:如果只有start,end默认为0*
a = arr.slice(2,6); 从index 2位置截取到index 6-1 的位置。a为 [3,4,5]

7.arr.concat(arr1,arr2,...);

不改变原来数组值,返回为 多个数组按照顺序组合而成的新的数组,同ES6 中 [...arr,...arr1,...arr2] 效果一致。

特殊用法:深度拷贝数组 let a = arr.concat();

二.数组与字符串的相互转化

1.arr.join('连接符号') ;

数组转换为字符串 (连接符号为空时,默认以 “,” 连接);

2.str.split('分割字符');

字符串转换为数组 (分割字符为空时,默认为‘’ 即每一个字符为一个元素进行截取加入到数组中)

数组中元素的查找

1.arr.indexOf('a');

正序遍历arr,返回arr数组中 第一个遍历到 的 元素 ‘a’ 所在位置,如不存在则返回 -1;

2.arr.lastIndexOf

反序遍历arr,返回arr数组中 第一个遍历到 的 元素 ‘a’ 所在位置,如不存在则返回 -1;

3.arr.includes('a');

如果arr数组中存在 ‘a’ 返回 true,否则返回false;

三.数组常见遍历方式

1.for循环,while循环,do while循环,for of

2.arr.every (返回值:true/false)

对数组中的每一项运行给定函数,如果改函数对每一项返回true,则返回true,否则返回false。

let arr = [2,3,1,4,5,7,6];
let a = arr.every((curr,index) => {
return curr > 3
})
console.log(a); //arr中存在小于3的元素,并不是每一项都返回的ture,打印 false

3.arr.some (返回值:true/false)

对数组中的每一项运行给定函数,如果改函数有一项返回true,则返回true,全部返回false时返回false。

let arr = [2,3,1,4,5,7,6];
let a = arr.every((curr,index) => {
return curr > 3
})
console.log(a); //arr中存在大于3的元素,打印 true。

4.arr.forEach

对数组中每一项运行给定函数,无返回值。作用为逻辑处理。

5.arr.filter

返回一个满足条件的新数组,但新数组必是原数组的一个子集(新数组的所有元素都来源于原数组),filter 意思为筛选,也就是从原数组筛选出满足条件的元素组合形成的新数组。

let target = [1,2,4,6,7,9].filter((curr,index) => {
if(curr <=5 ){
return curr;
}
});
console.log(target); //[1,2,4]

6.arr.map

对数组的每一项运行给定函数,返回每次函数调用的结果(return 返回的值)组成的数组。

let arr = [1,2,3,4,5];
let a = arr.map((curr,index) => {
return curr + 1;
});
console.log(a); // [2,3,4,5,6]

7.arr.reduce

对函数的每一项执行给定函数,返回一个被叠加到累加器的值,reduce执行完毕后 返回这个累加器

let arr = [1,2,3,4,5];
let a = arr.reduce((previous, current, index) => { previous 为累加器,默认为 arr [0] ,从index 为 1开始叠加。
return previous + current;
})
console.log(a); //15
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4);  //reduce运算法则

注意:every 、some、filter、map、forEach 中无法中途终止遍历,这几种方法都会将arr数组的每一个元素进行遍历,并执行运行函数。

四.数组的反叙、排序

1.arr.reverse ();

改变原数组,将arr反序排列。

2.arr.sort();

改变原数组,将arr 递增排列 或 递减排列

let arr = [1,4,2,5,3];
arr.sort((a,b) => {
return a - b; //递增排列
//return b - a; 递减排列
});
console.log(arr); // [1,2,3,4,5]

自定义排序

let friends = [
{name:'zhangsan',sex:'man',age:20},
{name:'lisi',sex:'man',age:29},
{name:'wangwu',sex:'man',age:26}
];
friends.sort((a,b) => {
if(a.age < b.age){
return -1;
}
if(a.age > b.age){
return 1;
}
return 0;
//可简化为 return a.age - b.age; 递增排序
//return b.age - a.age; 递减排序
});
console.log(friends);

五.其它方法

Array.from(arr);

返回一个新的数组。可用于数组的深拷贝,也可以将类数组转化为数组。

function sum () {
let str = Array.from(arguments).join(',');
//或者let str = Array.prototype.join.call( arguments, ',' );
console.log(str);
}
sum(1,2,3,4); // 1,2,3,4
//如果直接使用arguments.join(',') 系统会报错:arguments不是一个数组。实际上arguments为一个类数组,不拥有数组的一些方法。
//我们操作dom节点时候,找到的节点集和也为一个类数组。
//ES6 提供的Set 数据类型为一个类数组,可利用Array.from(set) 将Set类型转化为标准的数组;ps:也可利用Set的无重复性,先将数组转化为Set (new Set(arr)),再利用Array.from() ,实现数组的去重。

new Array(n).fill(0);

新建一个n位数的数组,并用0进行填充。

let a = new Array(3).fill(0);
console.log(a);//[0,0,0]

javascript 最全面的数组操作合集的更多相关文章

  1. SQL用法操作合集

    SQL用法操作合集   一.表的创建 1.创建表 格式: 1 CREATE TABLE 表名 2 (列名 数据类型(宽度)[DEFAULT 表达式][COLUMN CONSTRAINT], 3 ... ...

  2. JavaScript中常见的数组操作函数及用法

    JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...

  3. JavaScript jQuery 中定义数组操作及数组操作

    1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维 ...

  4. 【推荐分享】大量JavaScript/jQuery电子书籍教程pdf合集下载

    不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小   15天学会jQuery(完整版).pdf 274.79 KB   21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...

  5. 42套JavaScript深度解析教学视频!合集

    本文首发于:风云社区SCOEE(社区旨在普惠软件.图片.音乐.视频.素材.文档等互联网资源.为大众提供多样化的服务,以及主要涵盖学术科学.电脑技术.文化人文.体育健身等领域的知识和信息,获得用户的支持 ...

  6. Java文件复制删除操作合集

    import java.io.*; public class FileOperate { public FileOperate() { } /** * 新建目录 * @param folderPath ...

  7. git操作合集

    目录 安装 下载 本地配置 创建用户凭证ssh 忽略文件 基础操作 新建仓库 克隆仓库 获取更新 推送更新 查看历史 版本回退 分支 别名 linux服务器 疑难问题 清除历史大文件 安装 下载 下载 ...

  8. JavaScript常用技巧之数组操作

    1.获取最后数组中最后一个元素 . arr.slice(-1).pop() . arr[arr.length - 1] 2.过滤重复元素 arr.filter(function(v, i) { ret ...

  9. git常用操作合集

    基本操作git status 查看文件处于什么状态 git status -s 带上-s参数,可以以更紧凑的格式输出文件状态信息 git add 开始追踪该文件或者暂存已修改的文件. .gitigno ...

随机推荐

  1. servlet中的请求响应与重定向区别

    一.概念 请求响应(转发):将客户端请求转发另一个servlet或者jsp页面------------------------getRequestDispatcher()方法 重定向: 返回一个连接给 ...

  2. IP路由配置之---------debugging调试

    实验设备:华三设备N台加一个PC 步骤一,打开屏幕输出开关,开启控制台对系统信息的监视功能 <H3C>terminal debugging #<H3C>terminal mon ...

  3. Python设计模式 - UML - 组件图(Component Diagram)

    简介 组件图又称构建图,用于显示系统各组件及各组件关系的物理视图. 组件图通常包括组件.接口.关系.端口和连接器,用来显示程序代码中相应的模块.源文件或源文件集合之间的依赖和泛化关系. 组件图中的组件 ...

  4. Nginx – rewrite 配置 URL重写及301跳转原理图

    Nginx – rewrite 配置 URL重写 官网:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html 语法:rewrite re ...

  5. compatible

    compatible 英 [kəmˈpætəbl] 美 [kəmˈpætəbəl] adj. 兼容的,相容的; 和谐的,协调的; [生物学] 亲和的; 可以并存的,能共处的;

  6. Docker架构

    Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器. Docker容器通过Docker镜像来创建. 容器与镜像的关系类似于面向对象编程中的对象和类. Dock ...

  7. sendmail发送邮件

    #echo 'hello!' | mail -s "hello test" 119733@qq.com

  8. leveldb 学习记录(八) compact

    随着运行时间的增加,memtable会慢慢 转化成 sstable. sstable会越来越多 我们就需要进行整合 compact 代码会在写入查询key值 db写入时等多出位置调用MaybeSche ...

  9. python2/3 利用psycopg2 连接postgreSQL数据库。

    psycopg2 是一个通过python连接postgreSQL的库, 不要被它的名称蒙蔽了,你可能发现它的版本是psyconpg2.7.*, 以为它只能在python2上使用,实际上,这只是一个巧合 ...

  10. java多线程系列6 synchronized 加强版 ReentrantLock

    ReentrantLock类是可重入.互斥.实现了Lock接口的锁,它与使用synchronized方法和快具有相同的基本行为和语义,并且扩展了其能力.ReenreantLock类的常用方法有: Re ...