1、数组的定义
字面量:
let arr = [1,2,3,4]
构造函数:
let arr = new Array(1,2,3,4)
唯一区别:
let arr = new Array(10)
表示创建一个length为10的数组
2、数组的常用方法
(1)push
改变原数组
let arr = [ ]
arr.push(1,2) // 2
console.log(arr) // [1, 2]
push实现原理
Array.prototype.push = function ( ){
for(var i = 0; i < arguments.length; i ++){
this[this.length] = arguments[i]
}
return this.length;
}
(2)pop
改变原数组
let arr = [1, 2, 3, 4]
arr.pop( ) // 4
console.log(arr) // [1, 2, 3]
(3)unshift
改变原数组
let arr = [1, 2, 3]
arr.unshift(7,8) // 5
console.log(arr) // [7, 8, 1, 2, 3]
(4)shift
改变原数组
let arr = [1, 2, 3]
arr.shift( ) // 1
console.log(arr) [2, 3]
(5)reverse
改变原数组
let arr = [1, 3, 5, 7, 9]
arr.reverse( ) // [9, 7, 5, 3, 1]
console.log(arr) // [9, 7, 5, 3, 1]
(6)splice
改变原数组
arr.splice(从第几位开始, 截取多少的长度,在切口处添加新的数据)
let arr = [1, 2, 3, 4, 5]
arr.splice(2, 2) // [3, 4]
console.log(arr) // [1, 2, 5]
let arr = [1, 2, 3, 4, 5]
arr.splice(2, 1, 8, 9) // [3]
console.log(arr) // [1, 2, 8, 9, 4, 5]
let arr = [1, 2, 3, 4, 5]
arr.splice(2, 0, 6, 7) // [ ]
console.log(arr) // [1, 2, 6, 7, 3, 4, 5]
(7)sort
改变原数组
看返回值,当返回负数时,前面的数放在前面;当返回正数时,后面的数放在前面;返回0,不动
let arr = [1, 3, 6, 4, 2, 9, 5]
arr.sort(function(a, b){
return a - b;
})
面试题:给一个有序的数组,乱序
var arr = [1, 3, 4, 6, 8, 9]
arr.sort(function( ){
return Math.random( ) - 0.5;
})
(8)concat
不改变原数组
let arr1 = [1, 2, 3];
let arr2 = [5, 6, 7];
arr1.concat(arr2) // [1, 2, 3, 5, 6, 7]
console.log(arr1) // [1, 2, 3]
console.log(arr2) // [5, 6, 7]
(9)toString
let arr = [1, 2, 3, 4, 5];
arr.toString( ) // '1,2,3,4,5,6'
console.log(arr) // [1, 2, 3, 4, 5]
(10)slice
不改变原数组
slice(开始位置,结束位置(不包含该位置))
let arr = [1, 2, 3, 4, 5, 6];
arr.slice(1, 3) // [2, 3]
console.log(arr) // [1, 2, 3, 4, 5, 6]
arr.slice(1) // [2, 3, 4, 5, 6]
arr.slice( ) // [1, 2, 3, 4, 5, 6]
arr.slice(-3) // [4, 5, 6]
(11)join
let arr = [1, 2, 3, 4, 5, 6];
arr.join('|') // '1|2|3|4|5|6'
3、类数组
属性要为索引(数字),必须有length属性,最好加上push方法
var obj = {
"0" : "a",
"1" : "b",
"2" : "c",
length : 3,
push : Array.prototype.push,
splice : Array.prototype.splice
}