一、数组
数组的定义:
- 字面量
var arr = [1,2,3] //常用写法
- new Array( )
new Array(10) //一个参数的情况下表示生成了一个长度为10的数组
new Array(2,3,) // [2,3]
数组的方法
- 改变原数组的方法
- pop
- push
- shift
- unshift
- splice
- reverse
- sort
- 不改变原数组的方法
- concat
- slice
- join
- split
- toString
var arr = [1,2,3]
arr.pop() //3 删除数组的最后一位,并返回该数值 此时 arr = [1,2]
arr.push(4,5,6) // 5 向数组的最后添加元素,并返回添加之后的数组长度 arr= [1,2,4,5,6]
arr.shift() // 1 删除数组的第一位,并返回该值 arr = [2,4,5,6]
arr.unshift(8,9) // 6 向数组的头部添加元素,并返回数组的长度 arr = [8,9,2,4,5,6]
splice方法
var arr = [1,2,3,4,5,6] arr.splice(开始截取的索引,截取的个数,从截取开始位加入的元素) arr.splice(0,1,2,3,4) //从下标为0的截取1个元素,并在开始截取的位置添加2,3,4 此时arr=[2,3,4,2,3,4,5,6]
reverse方法是翻转数组,就是讲数组逆序输出
var a = [1,2,3]
arr.reverse()//[3,2,1]
sort 排序
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。所以有时他并不会按照我们认知的数字大小去排列,这时我们就需要往里面传入一个参数
var arr =[2,5,20,78,3,6,7,10] //升序 arr.sort(function(a,b){ if(a>b){ return 1; } else{ return -1; } })
sort排序其实利用的就是冒泡排序的原理会循环比较两个值的大小然后进行位置的交换,规律:
当返回一个正值时,后面的数换到前面,相当于两数交换位置
当返回一个负值时,前面的数还在前面,两数位置不变
###二、类数组
类数组的定义:一种类似数组的对象,但是类数组不能直接调用数组的方法
var obj = {
"2":"a",
"3":"b",
"length":2,
"push":Array.prototype.push,
"splice":Array.prototype.splice
}
像这样在类数组中添加对应属性,并将数组的方法赋值给它,就可以调用了
###三、代码模拟push方法
Array.prototype.myPush = function (){
for (var i = 0; i < arguments.length;i++){
this[this.length] = arguments[i];
}
return this.length;
}