以下为自学笔记。

一、Array类型

  创建数组的基本方式有两种:

   1.1第一种是使用Array构造函数(可省略new操作符)。

   1.2第二种是使用数组字面量表示法。

二、数组的访问

   2.1访问方法

    在读取和设置数组的值时,要用方括号并提供相应值的基于0的数字索引:

   2.2length属性

    数组的项数保存在length属性中,这个属性始终返回0或者更大的值。

    数组length属性不是只读的,通过设置这个属性,可以从数组的末尾移除项或者向数组中添加新项。看下面的例子:

三、转换方法

    valueOf():返回数组

    toString():返回由数组每个值的字符串形式拼接而成的一个以逗号分隔的字符串。为了创建这个字符串会调用数组每一项的toString()方法

    toLocaleString():返回由数组每个值的字符串形式拼接而成的一个以逗号分隔的字符串。为了创建这个字符串会调用数组每一项的toLocaleString()方法

    join()方法,可以使用不同的分隔符来构建这个字符串。

    join()方法只接受一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串

  如果不给join方法传入任何值,或者传入undefined,则用逗号作为分隔符。

四、栈方法

   栈:一种LIFO(Last-In—First-Out)后进先出的数据结构,

   push():接受任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度。

   pop():从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

五、队列方法

   队列:一种FIFO(First-In—First-Out)先进先出的数据结构。

   shift():能够移除数组中的第一个项并返回该项,同时将数组长度-1.  使用shift()+push()方法,可以像使用队列一样使用数组。

   unShift():能够在数组前端添加任意个项并返回新数组的长度. 使用unShift()和pop()方法能从反方向模拟队列

六、重排序方法

6.1  reverse()"反转数组项的顺序

6.2  sort()

   sort() 方法用于对数组的元素进行排序。

    如果调用该方法时没有使用参数,将按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

七、操作方法

ECMAScript为操作已经包含在数组中的项提供了很多方法,下面介绍三种

7.1 concat()方法会先创建当前数组的一个副本,然后将接收到的参数添加到副本的末尾,并返回新构建的数组

传递给concat方法的参数有3种情况:

1、没有参数

如果没有给concat方法传递参数,那么它只复制当前数组并返回副本

2、如果传递给concat()方法的是一个或多个数组,则该方法将这个数组中的每一项都添加到副本数组中

3、如果传递的参数不是数组,那这些参数就会被简单的添加到副本数组中去

7.2 slice()方法

   基于当前数组创建选定元素的新数组。

语法:arrayObject.slice(start,end)

start:规定从哪个数组下标处开始选取

end:规定从哪个数组下标处结束选取,可选参数

如果只有一个参数:返回从该参数指定位置开始到当前数组末尾的所有项

如果有两个参数:返回起始和结束位置之间的项,但不包括结束位置项。

如果参数中有负值:用数组长度加上参数来确定相应位置

注:slice方法不会影响原来的数组

7.3  splice()方法

1、删除:删除任意数量的项,并返回这些项。语法arrayObject.splice(index,howmany).index:要删除的第一项的位置,howmany:要删除的项数

2、插入:向指定位置插入任意数量的项,返回空数组。语法arrayObject.splice(index,0,item1,item2...itemN),index:起始位置、0:要删除的项数(纯插入不删除 任何项),item:要插入的项

3、添加:向指定位置插入任意数量的项,删除任意数量的项,语法arrayObject.splice(index,howmany,item1,item2...itemN),index:起始位置、howmany:要删除 的项数,item:要插入的项

八、位置方法

   indexOf(要查找的项,起点位置):从数组的开头开始向后查找

   lastIndexOf(要查找的项,起点位置):从数组的末尾开始向前查找

   这两个方法都返回要查找的项在数组中第一次出现的位置,没找到的情况下返回-1.如果 起点位置为负,则搜索从数组长度加上起点位置处开始。在比较要查找的项与数组中的每一项时,会要求两项必须严格相等(===)。

九、迭代方法

   每个方法都接受两个参数:要在每一项上运行的函数、运行该函数的作用域。

   传入这些方法中的函数会接受三个参数:数组项的值、该项在数组中的位置、数组对象本身。

   这些方法都不会修改数组本身包含的值。

   1、every()方法对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true.否则返回false,如果数组没有元素,则返回true。

   2、filter()方法对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。

   3、forEach()方法对数组的每一项运行给定函数,这个方法没有返回值,但是回调函数可能会有返回值。这个方法本质上与使用for循环迭代数组一样。

   4、map()方法对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组

   5、some()方法对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。

十、归并方法

   迭代数组所有的项,并构建一个最终返回的值。

   reduce()从数组的第一项开始,遍历后面的项

   reduceright()从数组的最后一项开始,向前遍历到第一项

   这两个方法都接收两个参数:在每一项上调用的函数、作为归并基础的初始值。

   传给二者的函数接收4个参数:前一个值、当前值、项的索引、数组对象

   这个函数返回的任何值都会作为第一个参数传给下一项,第一次迭代发生在数组的第二项上,所以第一个参数是数组的第一项,第二个参数是数组的第二项。  

JavaScript高级程序设计之自学笔记(一)————Array类型的更多相关文章

  1. 《JavaScript高级程序设计》读书笔记 ---基本包装类型

    为了便于操作基本类型值,ECMAScript 还提供了3 个特殊的引用类型:Boolean.Number 和String.这些类型与本章介绍的其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行 ...

  2. 《JavaScript高级程序设计》读书笔记--前言

    起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...

  3. 《JavaScript高级程序设计》学习笔记(5)——面向对象编程

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...

  4. 《JavaScript高级程序设计》学习笔记(4)——引用类型

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...

  5. 《JavaScript高级程序设计》学习笔记12篇

    写在前面: 这12篇博文不是给人看的,而是用来查的,忘记了什么基础知识,点开页面Ctrl + F关键字就好了 P.S.如果在对应分类里没有找到,麻烦告诉我,以便尽快添上.当然,我也会时不时地添点遗漏的 ...

  6. 《JavaScript高级程序设计》学习笔记

    系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...

  7. 《Javascript高级程序设计》读书笔记之对象创建

    <javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...

  8. JavaScript高级程序设计(读书笔记)(一)

    本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考. 第一章 JavaScript简介 JavaScript发展简史: 1995年,JavaScript诞生 19 ...

  9. 《JavaScript高级程序设计》学习笔记(3)——变量、作用域和内存问题

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第四章内容. 1.函数:通过函数可以封装 ...

随机推荐

  1. scala配置intellij IDEA15.0.3环境及hello world!

    1. Intellij IDEA Scala开发环境搭建 Intellij IDEA 15.0.3 默认配置里面没有Scala插件,需要手动安装,在Intellij IDEA 15.0.3 第一次运行 ...

  2. python爬虫爬取代理IP

    # #author:wuhao # #--*------------*-- #-****#爬取代理IP并保存到Excel----#爬取当日的代理IP并保存到Excel,目标网站xicidaili.co ...

  3. git 修改commit日期为之前的日期

    我在之前修改了一个文件,但是没有commit,现在我想要commit,日期为那天的日期 git commit --date="月 日 时间 年 +0800" -am "提 ...

  4. JUnit5 安装与使用

    虽然JUnit5 的测试版本早就出来了,但正式版直到几年9月份推出,目前最新版5.0.1.几乎所有的Java 开发人员都会使用JUnit 来做测试,但其实很多自动化测试人员也会使用Junit .目前, ...

  5. 在unity3d游戏中添加中文语音控制

    最近打算尝试一下OLAMI在游戏中应用的可能性,这里做一下记录. unity官方教程中的几个项目很精简,但看起来很不错,里面有全套的资源.最后我选择了tanks-tutorial来做这个实验. 下载和 ...

  6. Nginx配之负载均衡、缓存、黑名单和灰度发布

    一.Nginx安装(基于CentOS 6.5) 1.yum命令安装 yum install nginx –y(若不能安装,执行命令yum install epel-release) 2. 启动.停止和 ...

  7. 推荐使用国内的豆瓣源安装Python插件

    以前都是用pip安装Python插件的,直到今天 pip的原理其实是从Python的官方源pypi.python.org/pypi下载到本地,然后解包安装 但是有的时候,这个操作会非常慢,国内可以通过 ...

  8. 快速部署PostgreSQL

    PostgreSQL通常也简称Postgres,是一个关系型数据库管理系统,适用于各种Linux操作系统.Windows.Solaris.BSD和Mac OS X.本文基于CentOS7,使用yum源 ...

  9. px em rem的详解与区别

    在前端项目开发中,px,em,以及rem都是页面布局常用的单位,虽然它们是长度单位,但是所含的意义不一样.通过复习和查阅,总结了以下知识. px像素(Pixel) 定义:相对长度单位.像素px是相对于 ...

  10. HDU1175 连连看(DFS)

    Problem Description “连连看”相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以通过一条线连起来(这条线不能经 ...