数组
- 数组的定义·
//new Array()
var a = new Array(10)
console.log(a) // [empty*10]
//字面量的方式
var arr = [10]
console.log(arr) //10
- 数组的读写
var arr = [1,2,3,4]
//不可以溢出读
console.log(arr[11]) //
arr[5] = 5 //可以溢出写
数组常用的方法
会改变原数组
- push
//在数组的最后一位添加一个
var arr = [1,2,3,4]
arr.push(5) //[1,2,3,4,5]
//实现一个自己push方法
Array.prototype.myPush = function(){
if(arguments.length == 1){
this[this.length] = arguments[0]
}else{
for(var i = 0; i < arguments.length; i ++){
this[this.length] = arguments[i]
}
return this.length
}
- pop
var arr = [1,2,3,4]
arr.pop() //[1,2,3]
- shift
var arr = [1,2,3]
arr.shift() //[1,2]
- unshift
//在数组的首位添加
var arr = [1,2,3,4]
arr.unshit(0) //[0,1,2,3,4]
- reverse
//逆转
var arr = [1,2]
arr.reverse()//[2,1]
- sort
//排序
var arr = [1,4,2,6,4]
arr.sort(function(a,b){return a-b}) //[1,2,44,6]
//如何让一个有序数组打乱
var arr = [1,2,3,4,5,6]
arr.sort(function(){return Math.random() - 0.5})
- splice
//arr.splice(从第几位开始,截取的长度,在接口添加的新数据)
var arr = [1,2,3,4]
arr.splice(1,2) //[1,4]
arr.splice(1,0,5) //[1,5,2,3,4]
不改变原数组
concat
//连接两个数组并返回一个新数组
var arr1 = [1,2]
var arr2 = [2,3]
var arr = arr1.concat(arr2)
console.log(arr)//[1,2,2,3]
join
//让数组连接起来并且返回字符串
var arr = [1,2,3,4]
var arr1 = arr.join('-')
console.log(arr1) //'1-2-3-4'
toString
split 和join逆向操作
slice
arr.slice(起始位子,结束位子)//截取数组
类数组
- 可以利用属性名模拟数组的特性
- 可以动态的增长length的属性
- 如果强行让类数组用push方法,则会根据length属性值的位置进行属性的扩增
var obj = {
"0": 'a',
"1": 'b',
"2": 'c',
"length":3,
"push": Array.prototype.push
}
//阿里面试题
var obj = {
"2" : 'a',
"3" : 'b',
"length" :2,
"push" : Array.prototype.push
}
obj.push(c)
obj.push(d)
obj={
"2" : "c",
"3" : "d",
"length" : 4,
"push" : Array.prototyp.push
}