js 数组有很多方法,其中有的常用,有的不常用,归纳几个常用的方法,做个总结:

1. 转换方法:

1.1 valueOf():调用这个方法会返回数组本身

  <script>
var arr = ['blue', 'red', 'yellow', 'gray', 'green'];
console.log(arr.valueOf());
console.log(arr);
</script>

1.2 toString():返回数组中每个值的字符串形式以逗号拼接链接起来的字符串,实际上回调用数组每项的toSting()方法

    <script>
var arr = ['blue', 'red', 'yellow', 'gray', 'green'];
console.log(arr.toString());
</script>

1.3 join() 方法:将数组转换成字符串,可以接受一个参数,为拼接字符串的链接符;如果没有参数,默认为用逗号拼接

   <script>
var arr = ['blue', 'red', 'yellow', 'gray', 'green'];
console.log(arr.join()); // 默认为逗号拼接
console.log(arr.join(",")); // 显示为逗号拼接
console.log(arr.join("")); // 无拼接符,直接连接
console.log(arr.join(" ")); // 依照空格拼接
console.log(arr.join("-->")); // 依照箭头拼接
</script>

2. 栈方法:

2.1 push():将一个或者多个项目推入数组中,从尾部推入,返回新数组的项目数量

     <script>
var arr = ['blue', 'red', 'yellow'];
console.log(arr);
arr.push("gray");
console.log(arr);
arr.push("black", 'green');
console.log(arr);
</script>

2.2  pop():从数组中取出数组项,从最后一个开始取,返回取出的项目

 <script>
var arr = ['blue', 'red', 'yellow', 'gray', 'green'];
console.log(arr);
var arr1 = arr.pop();
console.log(arr1);
console.log(arr);
</script>

3.队列方法:

3.1 shift(): 从数组队列前端取出数组的项目,返回取出的项

     <script>
var arr = ['blue', 'red', 'yellow', 'gray', 'green'];
console.log(arr);
var arr1 = arr.shift();
console.log(arr1);
console.log(arr);
</script>

3.2 unshift():从数组队列的前端添加数据项,返回新数组的项目数

     <script>
var arr = ['blue', 'red', 'yellow'];
console.log(arr);
var arr1 = arr.unshift('gray', 'green');
console.log(arr1);
console.log(arr);
</script>

4. 重排序方法:

4.1 reverse(): 将数组的项目顺序颠倒,反转

     <script>
var arr = ['blue', 'red', 'yellow', 'gray', 'green'];
console.log(arr);
arr.reverse();
console.log(arr);
</script>

4.2 sort(): 对于数组进行排序,这里是按照字符串来进行比较的(而字符串是按照字符编码来比较(ascII 码))

     <script>
var arr = ['blue', 'red', 'yellow', 'gray', 'green'];
console.log(arr);
arr.sort();
console.log(arr);
</script>

当比较的是数字时候,显然不符合我们的要求了:

     <script>
var arr = [5, 31, 16, 2, 9];
console.log(arr);
arr.sort();
console.log(arr);
</script>

sort()可以接受一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面

按照升序排列

 <script>
var arr = [5, 31, 16, 2, 9];
console.log(arr);
arr.sort(function(a, b) {
return a - b;
});
console.log(arr);
</script>

按照降序排列:

     <script>
var arr = [5, 31, 16, 2, 9];
console.log(arr);
arr.sort(function(a, b) {
return b - a;
});
console.log(arr);
</script>

5. 操作方法:

5.1   slice(): 截取数组。接受两个参数,一个是起始位,一个是终止位;如果只传一个参数,表示从这个位置直到末尾;如果两个参数,表示从这个位置到结束位置,但是不包括结束位;如果不传参数,表示从第0位到结尾。

返回被截取的数组

   <script>
var arr = [5, 31, 16, 2, 9];
console.log(arr);
var arr1 = arr.slice(1);
console.log(arr);
console.log(arr1);
var arr2 = arr.slice(1, 3);
console.log(arr);
console.log(arr2);
</script>

备注:如果参数是负数,则从后往前计算位置。如果第二位小于第一位,则返回空数组

 <script>
var arr = [5, 31, 16, 2, 9];
console.log(arr);
var arr1 = arr.slice(-1);
console.log(arr);
console.log(arr1);
var arr2 = arr.slice(-1, -3);
console.log(arr);
console.log(arr2);
</script>

5.2  splice(): 可以对数组进行删除,插入,替换操作:

5.2.1 删除:接受两个参数,第一个,删除位置,第二个,删除数量

     <script>
var arr = [5, 31, 16, 2, 9];
console.log(arr);
var arr1 = arr.splice(1, 2);
console.log(arr);
console.log(arr1);
</script>

5.2.2  插入:接受3个参数,第一个:起始位,第二个:删除项数0,第三个,要插入的项目(可以是一项,也可以是多项)

基本思想:先删除,在插入

  <script>
var arr = [5, 31, 16, 2, 9];
console.log(arr);
var arr1 = arr.splice(1, 0, 12, 33, 67); // 这里12,33,67 是需要增加的项,此处有3项
console.log(arr);
console.log(arr1);
</script>

5.2.3 替换:接受3 个参数,第一个:起始位置,第二个:删除的项数,第三个:需要提换的项目

  <script>
var arr = [5, 31, 16, 2, 9];
console.log(arr);
var arr1 = arr.splice(1, 1, 12, 33, 67); // 这里12,33,67 是需要提换的项,此处有3项
console.log(arr);
console.log(arr1);
</script>

6. 位置方法:

6.1  indexOf():  查找数组中是否有某个项目,如果有,则返回该项在数组中的位置,如果没有,则返回 -1

    <script>
var arr = [5, 31, 16, 2, 9]; var arr1 = arr.indexOf(2);
console.log(arr);
console.log(arr1);
</script>

6.2 lastIndexOf()  : 作用域indexOf() 一样,但是一个是indexOf()是从0开始查找,lastIndexOf() 是从最后一位开始查找,即一个从前往后查找,一个从后往前查找

     <script>
var arr = [5, 31, 16, 2, 9]; var arr1 = arr.lastIndexOf(9);
console.log(arr);
console.log(arr1);
</script>

6.3 indexOf() 和lastIndexOf()  : 都可以接受两个参数,第一个,是要查找的项目,第二个,是指明从哪一位开始查找

  <script>
var arr = [1, 2, 3, 4, 5, 6, 7, 6, 4, 3, 2, 1];
var arr1 = arr.indexOf(4, 4);
var arr2 = arr.lastIndexOf(4, 3);
console.log(arr);
console.log(arr1);
console.log(arr2);
</script>

7. 迭代方法:接受两个参数:要在每一项运行的函数,和运行改函数的作用域对象(可选)----this ;

传入这些函数的参数接受三个参数:数组的项目,该项目的索引,数组对象本身

7.1 every():当数组中每项的执行都返回true 时,结果返回true

     <script>
var arr = [1, 2, 3, 4, 5, 6, 7, 6, 4, 3, 2, 1];
var arr1 = arr.every(function(item, index, obj) {
return item < 9;
});
console.log(arr);
console.log(arr1);
</script>

   <script>
var arr = [1, 2, 3, 4, 5, 6, 7, 6, 4, 3, 2, 1];
var arr1 = arr.every(function(item, index, obj) {
return item < 5;
});
console.log(arr);
console.log(arr1);
</script>

7.2 some() : 当执行函数中某项返回true 时,结果返回true

备注:只要有一项返回true,结果就返回true

 <script>
var arr = [1, 2, 3, 4, 5, 6, 7, 6, 4, 3, 2, 1];
var arr1 = arr.some(function(item, index, obj) {
return item < 5;
});
console.log(arr);
console.log(arr1);
</script>

7.3 filter()  : 返回执行结果中返回true 的项目

这个函数可以达到筛选功能

  <script>
var arr = [1, 2, 3, 4, 5, 6, 7, 6, 4, 3, 2, 1];
var arr1 = arr.filter(function(item, index, obj) {
return item < 5;
});
console.log(arr);
console.log(arr1);
</script>

7.4 map() :返回数组各项调用函数的结果组成的数组

every(),some(),filter() 都是针对 数组本身进行返回,而map() 是针对数组操作结果进行返回

   <script>
var arr = [1, 2, 3, 4, 5, 6, 7, 6, 4, 3, 2, 1];
var arr1 = arr.map(function(item, index, obj) {
return item * 2;
});
console.log(arr);
console.log(arr1);
</script>

7.5 forEach()  : 没有返回值,对数组中的各项执行函数操作

  <script>
var arr = [1, 2, 3, 4, 5, 6, 7, 6, 4, 3, 2, 1];
var target = [];
arr.forEach(function(item, index, obj) {
if (this.indexOf(item) == -1) {
this.push(item);
}
}, target);
console.log(arr);
console.log(target);
</script>

8. 归并方法:

8.1 reduce(): 迭代数组的所有项目,然后构建一个所有项的最终返回值

接受两个参数,一个在每一项上调用的函数,另一个作为归并基础的初始值(可选)

调用的函数接受四个参数:1.前一个值,2.当前值,3.项的索引,4.数组对象本身。

这个函数返回的任何值都会作为第一个参数,自动传给下一项。

第一次迭代发生在数组的第一项上,因此第一个参数是数组的第一项,第二个参数是数组的第二项

     <script>
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.reduce(function(pre, cur, index, obj) {
return pre + cur;
});
console.log(arr);
console.log(arr1);
</script>

有初始值:

     <script>
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.reduce(function(pre, cur, index, obj) {
return pre + cur;
}, 100);
console.log(arr);
console.log(arr1);
</script>

8.2 reduceRight() : 这个函数和reduce() 一样的,只是从右面开始迭代而已;而reduce() 是从左面开始迭代

js数组方法解析的更多相关文章

  1. js 数组方法比较

    js 数组方法比较 table th:first-of-type { width: 80px; } table th:nth-of-type(2) { width: 120px; } table th ...

  2. js数组方法详解

    Array对象的方法-25个 /*js数组方法详解 */ /* * 1 concat() 用于连接多个数组或者值-------------- * 2 copyWithin() 方法用于从数组的指定位置 ...

  3. 转载收藏(js数组方法大全)

    js数组方法大全 JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组var arr2 = new Arra ...

  4. js数组方法大全(上)

    # js数组方法大全(上) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 join() reverse() sort() concat() slice( ...

  5. js数组方法大全(下)

    # js数组方法大全(下) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 forEach() map() filer() every() some() ...

  6. JS数组方法汇总 array数组元素的添加和删除

    js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[ ...

  7. javascript数组详解(js数组深度解析)【forEach(),every(),map(),filter(),reduce()】

    Array 对象是一个复合类型,用于在单个的变量中存储多个值,每个值类型可以不同. 创建数组对象的方法: new Array(); new Array(size); new Array(element ...

  8. 几个关于js数组方法reduce的经典片段

    以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...

  9. js数组方法详解(最新最全)

    数组是js中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响.本文所有的栗子都是在es7环境下测试的,如果有问题欢迎留言交流 ...

随机推荐

  1. 廖雪峰Java4反射与泛型-3范型-5extends通配符

    1.泛型的继承关系: Pair<Integer>不是Pair<Number>的子类 add()不接受Pair<Integer> Pair.java package ...

  2. MySQL 迁移并搭建主从(实践)

    第一阶段 一.数据的初始化 1.老主库 关闭sql_log_binset sql_log_bin = off; 创建导出用户grant all privileges on *.* to 'dump'@ ...

  3. Windows 2016 无域故障转移群集部署方法 超详细图文教程 (二)

    上一章我们配置了一台设备,接着根据那个配置,配置其它设备.这里我配置了三台设备: 创建故障转移群集,并添加设备. 之前的操作都是每台服务器都要做的,而这个操作,只需要任选一台去做即可,我这里选d1 1 ...

  4. (转)C#连接Oracle数据库(直接引用dll使用)

    原文地址:http://www.cnblogs.com/gguozhenqian/p/4262813.html 项目中有个功能需要从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的S ...

  5. Could not resolve all files for configuration;Andriod在build.gradle添加compile files()报错

    在build.gradle中添加个 compile files('libs/alipaySdk-20170922.jar') 就一直报这个错误 Error:Could not resolve all ...

  6. 类似openDialog的弹窗

    html <modal title="这里是标题" hidden="{{modalHidden}}" bindconfirm="modalCon ...

  7. orika core工具对实体(Bean)进行深度拷贝

    1. 在pom.xml中添加orika core依赖: <!-- https://mvnrepository.com/artifact/ma.glasnost.orika/orika-core ...

  8. JVM总结-垃圾回收

    Java 虚拟机的自动内存管理,将原本需要由开发人员手动回收的内存,交给垃圾回收器来自动回收.不过既然是自动机制,肯定没法做到像手动回收那般精准高效 [1] ,而且还会带来不少与垃圾回收实现相关的问题 ...

  9. 基于Keras的自动驾驶技术的车轮转向角度的可视化

    This post is about understanding how a self driving deep learning network decides to steer the wheel ...

  10. putty使用秘钥对登录百度云系统全过程

    使用秘钥对登录百度云系统全过程 1在百度云生成秘钥对 并且绑定要登录的IP 1)创建 2) 创建成功后,会自动下载私钥到本地 3)绑定 4)绑定完毕 2把下载到本地的私钥使用putty key gen ...