[第五章] js引用类型之Array与Object

引用类型是一种数据结构,可以理解为类。

对象是类的实例。

Var person=new Object();//person就是一个对象

Es提供了很多原生类比如Object。

 

Object类

  • 创建方法

1.

var person=new Object()

2.

var person={‘a’:1}//属性名全部都是字符串,就算没有加引号,也会被自动转换为字符串

  • 访问属性

1.

person[‘a’] //属性名必须是字符串 优点是可以通过变量来访问属性,且属性名可以是任意字符

var s=’a’;alert(person[s])

2.

person.a

 

Array类

  • 创建方法

1.

Var color=new Array();

Var color = new Array(20);//length为20

Var color=new Array(“red”,”blue”)

给数组传值的时候,如果只传一个值,且这个值是数字,则会创建这个length的数组,如果是其他,则会创建一个保存这一项的数组。

New都可以省略。

2.

var color=[]

 

  • 索引

  1. 如果设置数组内某个值的索引超过了现有的length,数组的长度会自动增加。
  2. 数组的length不是只读的。可以改变。如果减小它,后面几项会被删除,如果增加它,新增的项是undefined。
  3. 可以使用length属性很方便地在数组最后加值。

Colors[colors.length]=”new”

 

  • 检测数组

Array.isArray(value)

 

  • 转换方法

所有对象都有toLocalString(),toString(),valueOf()方法

toLocalString,toString返回以逗号分隔的字符串

valueOf返回数组本身

[].join(“ “) 返回以空格分隔的字符串

如果数组中的某一项是undefined,则在toString方法里以空字符串表示。

 

  • 栈方法

Push,返回修改后的数组长度

Pop,返回移除的项

 

  • 队列方法

Shift 移除第一项并返回值

Unshift 在数组前端添加项并返回新数组长度

 

  • 重排序方法

Reverse() 返回逆序数组

Sort() 默认按升序,默认调用每一项的toString方法,以字符串顺序排序

Sort可以接受一个比较函数作为参数。这样就会覆盖默认的toString方法的比较方式。

Function compare(value1,value2){

If(value1<value2)return -1

Else if(value>value2)return 1

Else return 0}

 

  • 其他方法

Concat()可以基于当前数组中的所有项创建一个新数组。把传入的参数添加到末尾。如果传入的参数是数组,数组中的每一项会被添加到末尾。

 

Slice() 基于当前数组中的一个或多个项创建一个新数组。如果只有一个参数,是起始位置。返回的是从起始位置到结束位置(不包括结束位置)之间的项。、

slice和concat都不会影响原来的数组。

 

Splice() 向数组的中部插入或删除项。

删除:传入两个参数,第一个参数是起始,第二个参数是末尾

删除后插入:第一个参数是删除位置,第二个参数是删除个数,之后的参数是待插入的项(任意数量) 可以与...符号配合使用,效果更佳

 

indexOf()和lastIndexOf()

两个参数,第一个是待查找的项,必填,第二个是查找起始位置,选填,一个正着找一个反着找。使用全等操作符比较。(==会自动转换数据类型,===不会)但是在比较对象的时候,比较的是地址值,所以不可以使用indexOf查找对象数组里是否有某个对象,必须要遍历来比较。

 

==涉及到的自动类型转换

  • 1.==符号在判断左右两边数据是否相等时,如果数据类型一致,直接比较值即可
  • 2.==符号左右数据类型不一致时,如果两方数据为布尔型、数值型、字符串型时,不为数字的那一方自动调用Number()方法
  • 3.undefinednull这两者互相相等,及自身也相等,除此之外和谁都不想等
  • 4.NaN比较特殊,他和自己都不相等
  • 5.当数值型、字符串型、布尔型和对象进行比较时,对象调用toString()方法得到一个字符串

 

  • 迭代方法

Filter,map, forEach,every,some

对数组里的每一项运行给定函数, 函数会得到三个值,该项的值,该项的index,该数组本身。

 

Filter() 返回由返回true的项组成的数组

Var numbers=[1,2,3]

Var result=numbers.filter(function(item,index,array){return(item>2)})

Alert(result) // 3

 

Map() 返回函数返回的所有结果组成的数组

 

forEach() 数组每一项都执行函数,没有返回值

 

every() 如果全部返回true,返回true

 

some() 如果任一项返回true,返回true

 

 

  • 归并方法

Reduce()和reduceRight()

一个从前往后,一个从后往前

Reduce接受两个参数,一是一个函数,二是初始迭代值(可选)

Reduce里的函数接收四个参数,上一次迭代返回的值,当前项,当前索引,当前数组。如果没有指定初始迭代值,那么第一次迭代的时候,第一个参数就是第一项,第二个参数是第二项。

如下所示,第一次迭代的时候p是5,c是1。第二次迭代的时候,p是6,c是2。所以最后的结果是1+2+3+4+5+5=20

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值