ECMAScript中的数组与其他语言最大的不同在于数组的每一项可以保存任何类型的数据,而且数组的大小可以动态调整。对于数组的操作在前端开发中还是很频繁的,js本身提供了很多方法供开发者使用,现在对数组的常用方法进行一些总结。

1.创建数组

  • 使用Array构造函数,在创建时,可以传递数组的长度,也可以传递数组中每一项的值;在使用这种方式创建时,可以省略new关键字;

  • 对象字面量;在使用对象字面量创建数组时,不会调用数组的构造函数;所以instanceof会返回false;

    var colors = new Array()

    var colors = new Array(20) // 传入数组长度

    var colors = new Array('red', 'blue', 'green') // 传入数组元素

2.数组方法

(1)检测数组

  • instanceof:检测某个对象是不是数组;value instanceof Array
  • isArray:检测某个对象是不是数组;Array.isArray(value)

(2)转换方法

  • toString:返回由数组中每个值的字符串形式拼接而成的一个由逗号分隔的字符串;Array.toString()

  • valueOf:与toString返回相同的值,但返回数组;Array.valueOf()

  • toLocaleString: 与toString返回相同的值,类型是字符串;Array.toLocaleString();

  • join:返回拼接的字符串,可以接收一个参数作为分隔符,默认的分隔符是逗号;

    var animals = ['dog','cat','tiger']
    console.log(animals.join(',') // dog,cat,tiger
    console.log(animals.join('|') // dog|cat|tiger
    复制代码
  • tips: 如果数组中的某一项是null、undefined,那么该值在数组调用toString、valueOf、toLocaleString和join方法时,返回空字符串;

(3)栈方法

  • push:接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后的数组的长度;
  • pop:从数组末尾删除最后一项,减少数组的长度,返回移除的项;

(4)队列方法

  • shift:移除数组的第一项并返回该项,同时将数组的长度减1;
  • unshift:在数组的前端添加任意项,并返回新数组的长度;

(5)重排序方法

  • reverse:反转数组项的顺序;返回经过排序过的数组;
  • sort:将数组中的元素进行排序,接收一个排序函数作为参数,指明排序的顺序;调用每个数组项的toString()方法,得到比较的字符串,返回经过排序后的数组;

(6)操作方法

  • concat:创建一个当前数组的副本,然后将接收到的参数添加到这个副本的末尾,最后返回新的数组。原来的数组保持不变;
  • slice:接收两个参数,分别是返回项的开始位置和结束位置,不包括结束位置的项。
  • splice:向数组中插入若干项,返回一个数组,数组中包含从原始数组中删除的项,如果没有删除则返回一个空数组。主要用途包括:
    • 删除:指定两个参数,要删除的起始项以及项数;
    • 插入:需要插入至少三个参数,起始位置,要删除的项数,以及要插入的元素(可以传入多个);
    • 替换:先删除任意项,再插入任意项。需要指定三个参数,起始项数,要删除的项数,以及插入的项;插入的项不必与删除的项数相等;

(7)位置方法

  • indexOf:接收两个参数,要查找的元素和查找位置起点的索引,返回查找元素在数组中的位置索引,没找到返回-1。indexOf表示从头开始查找;
  • lastIndexOf:与indexOf功能相同,从数组的末尾开始查找;
  • tips:在查找元素进行比较时,进行的是全等(===)比较;

(8)迭代方法

接收两个参数,在每一项上运行的函数和运行该函数的作用域对象(可选)。操作不会修改数组本身的值;

  • every:对数组中的每一项运行给定的函数,如果每一项都返回true,则返回true;
  • filter:对数组中的每一项运行给定函数,返回数组中返回为true的项组成的数组;
  • forEach:对数组中的每一项运行给定的函数,没有返回值;与for in循环功能相同;
  • map:对数组中的每一项运行给定的函数,返回运行结果组成的数组;
  • some:对数组中的每一项运行给定的函数,如果任意一项返回true,则返回true;

(9)归并方法

接收两个参数,分别是在每一项上的执行的函数和作为归并基础的初始值;

  • reduce:迭代数组中的所有项,构建一个最终的返回值。从数组中的第一项开始,逐个遍历到最后;

    var list = [1, 2, 3, 4, 5];
    var sum = list.reduce(function(prev, cur, index, array) {return prev + cur;
    });
    console.log(sum); // 15
    复制代码
  • reduceRight:迭代数组中的所有项,构建一个最终的返回值,从数组的最后一个开始,向前遍历到第一项
  • tips:传递给归并方法的函数接收四个参数,分别是前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项;作为归并的基础值可以不传,不传默认基本值是数组的第一项或最后一项;

JavaScript Array常用方法相关推荐

  1. Javascript语言精粹之Array常用方法分析

    Javascript语言精粹之Array常用方法分析 1.Array常用方法分析 1.1 Array.prototype.sort() Javascript的默认比较函数假定被排序元素都是字符串,所以 ...

  2. JavaScript Array相关方法

    JavaScript 标准内置对象 Array 常用方法 Array.prototype.every() Array.prototype.some() Array.prototype.filter() ...

  3. JavaScript数组常用方法解析和深层次js数组扁平化

    前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...

  4. [ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口

    [ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口 本文地址:https://blog.csdn.net/qq_28550263/article ...

  5. JavaScript Array --map()、filter()、reduce()、forEach()函数的使用

    题目: 1.得到 3000 到 3500 之内工资的人. 2.增加一个年龄的字段,并且计算其年龄. 3.打印出每个人的所在城市 4.计算所有人的工资的总和. 测试数据: function getDat ...

  6. JavaScript - Array对象的使用 及 数组排序 sort

    <html><head><head><body><script language="javascript">// Arr ...

  7. Javascript第三章数组Array常用方法第三课

    第一种JavaScript sort() 方法 更多免费教学文章请关注这里 实例 例子 1 在本例中,我们将创建一个数组,并按字母顺序进行排序: <script type="text/ ...

  8. javascript——Array类型

    今天这节教程不仅仅是阐述ECMAScript3的部分功能,同时也会阐述有关EXMASctip5的很多新的功能. 一.创建 因为它是一个引用类型,自然就需要在使用前先构造它. 我将分成两种方式来讲述 I ...

  9. JavaScript Array reverse 方法:颠倒数组中元素的顺序

    在JavaScript中,Array对象的reverse()方法将颠倒(反转)数组中元素的顺序.arr.reverse()在原数组上实现这一功能,即,reverse()会改变原数组. 例1:将数组元素 ...

最新文章

  1. mysql隐藏密码_MySQL在Linux系统中隐藏命令行中的密码的方法
  2. 深度学习:一文看懂CNN、RNN等七种范例
  3. 批阅论文和作业Python程序助手
  4. asp.net treeView 节点 点击 变色
  5. 【NLP】一文搞懂NLP中的对抗训练
  6. Miller-Rabin素数测试
  7. oracle impdp导入实例,Oracle数据泵导入导出案例
  8. 如何通过js处理相同时间的信息整合到一起的问题
  9. unity3d 摄像机跟随鼠标和键盘的控制
  10. arcmap常见错误及常用操作(待补充)
  11. go append 方法_Go 的 append 操作是线程安全的吗
  12. 微信公众号可以开店吗?
  13. 如何做出好的文档 (要学习前人的经验,不要闭门造车)
  14. Linux批量清空当前目录中的日志文件
  15. MATLAB函数调用
  16. 日程表模板html,excel日程表模板(每日工作时间表模板)
  17. 鸿蒙系统安全模式,菜鸟必看 如何在安全模式下使用光驱
  18. Java-Anagram方法
  19. 《灵飞经》3·印神无双 第十三章 剑奕星斗 3
  20. CTF--Broadcast

热门文章

  1. Canvas的save和restore方法
  2. 03-C语言的注释与转义字符
  3. 终于解决SQL Server 2008 64位系统无法导入Access/Excel的问题 2012/08/01
  4. 国际化(1)---JS文件国际化
  5. ADSL路由器防止******
  6. Python matplotlib中文显示异常,导入simhei字体有误
  7. Openldap配置TLS加密传输(完整版——手动配置)
  8. windows开了远程控制访问老提示密码账号不正确
  9. AngularJS模块——module
  10. 最大似然估计的一个示例