数组 arguments

数组

数组也是对象,和普通对象区别是,普通对象的属性名是字符串,而数组则是索引

//创建数组
var arr = new Array(10,20,30);
//添加元素
arr[索引] =;
//读取元素
arr[索引]
//对于连续添加的数组,获取数组长度;非连续数组,会获取最大索引加1
arr.length
//向数组最后一个位置添加元素
arr[arr.length]=;

修改length,如果修改的length大于原长度,则多出部分会空出来;小于原长度,则多出的会删除

使用数组字面量来创建数组
var arr = [1,2,3,5,6];

数组的十个方法

1、push方法
该方法可以向数组末尾添加一个或者多个元素,并返回数组的新长度。
数组.push(元素)

2、unshift方法
该方法可以向数组开头添加一个或多个元素,并返回数组的新长度。

3、pop方法
删除并返回数组的最后一个元素

4、shift方法
删除并返回数组的第一个元素

5、slice方法
可以用来从数组中提取指定元素,传进两个参数:开始结束位置;第二个元素可以省略默认取到最后,也可以传负数。左闭右开

6、splice方法
可以用于删除数组中的指定元素,并将被删除的元素作为返回值返回,添加新的元素;两个参数。第一个参数表示开始位置索引,第二个位置表示删除的数量,第三个元素及以后,传递新的参数。往指定索引前添加元素。

7、concat方法
连接两个或多个数组,并返回新数组,不会对原数组产生影响。
语法 :arr.concat(arr1,arr2,元素…)

8、join方法
将数组转换成一个字符串,可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符。不改变原有数组,将返回这个转换后的字符串。

9、reverse方法
该方法用来反转数组,会影响原数组。

10、sort方法
对数组的元素进行排序,会影响原数组。默认会按照Unicode编码进行排序
注意:即使对于纯数字的数组,也会按照Unicode编码排序,索引可能会得到错误的结果

可以自己制定排序规则,在sort()中添加一个回调函数,传入两个形参。浏览器将会分别使用数组中的元素作为实参去调用回调函数。
浏览器会根据回调函数的返回值来决定元素的顺序。但是肯定的是a一定在b前面。
如果返回一个大于0的值,则交换位置;小于0和等于0都不交换位置。

arr.sort(function(a,b){
	return a-b;//升序   b-a 降序
	}
数组遍历

除了使用for循环遍历数组,还可以使用forEach方法(只支持IE8以上的浏览器)。

forEach()方法需要一个函数作为参数,像以下由我们创建但是不由我们调用的,称为回调函数。数组中有几个元素,函数就会执行几次。每次执行,浏览器会将遍历到的元素以实参的形式传递进来

浏览器会在回调函数中传进三个参数:
1、当前正在遍历的元素 currentValue
2、当前正在遍历元素的索引 index
3、正在遍历的数组本身 arr

arr.forEach(function(a,b,c){
	console.log("a = "+a);
	});
call()、apply()

这两个方法都是函数对象的方法,需要通过函数对象来调用。当对函数调用call和apply都会调用函数执行。

在调用call和apply时可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行的this.
call方法可以将实参在对象之后依次传递,而apply方法需要将实参封装到一个数组中统一传递。
相当于call传一个对象和基本数据类型,apply传两个对象(指定对象和数组对象)

function fun(a,b){
	alert(a);
	alert(b);
}

fun.call(obj,2,3) // a=2,b=3
fun.apply(obj,[2,3])
function fun(){
	alert(this.name);
}

var obj = {name:"obj",
	   sayName:function(){
	   	alert(this.name)}
};
var obj2 = {name:"obj2"};

fun.apply(obj) //obj
fun.apply(obj2) //obj2

obj.sayName()  //obj
obj.sayName.apply(obj2) //obj2
arguments

在调用函数时,除了传进this,还会传进另外一个隐含参数:封装实参的对象arguments,它是一个类数组对象,可以通过索引操作数据(arguments[index]),也可以获取长度(arguments.length)。

在调用函数时,我们所传递的实参都会在arguments中保存.即使不定义形参,也可以通过arguments来使用

其有一个属性:callee,这个属性对应一个函数对象,就是当前正在执行的函数对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值