数组是JS中的引用类型之一
引用类型和值的类型的区别:存放的位置不同
引用类型存放在内存里,堆内存
值类型存放在内存里,栈内存
**注:通常情况下,我们只在数组下存放同一类型的成员**
数组的定义
字面量、直接量:var arr = [ ];
构造函数:var arr1 = new Array( );
var arr2 = Array( );
区别
字面量可以在定义数组的时候直接定义成员
构造函数也可以在定义的时候有直接定义成员
构造函数的特俗情况:当只有一个参数并且参数是数字的时候,该数字表示的是数组的长度
数组的使用
语法:数组[下标(索引)]
var arr = [1, 2, 3, 4];
修改数组的成员:arr[0] = 111;
使用数组的成员:console.log(arr);
**
数组的循环 (常用for循环)
for (var i = 0; i < arr.length; i++){
console.log(arr[i]);
}
数组的长度
数组天生有一个属性:length 它表示数组的长度 它是可读可写的
数组的长度改变会影响数组。
var arr = [1, 3, 4, 2, 7, 8];
console.log(arr.length);//6
arr.length = 3;
console.log(arr.length); //[1, 3, 4]
删除数组的末尾项
var arr = [1, 3, 5, 4, 8];
arr.length -=1;
console.log(arr); //[1, 3, 5, 4];
清空数组
arr.length = 0;
数组的常用方法
shift( ):删除头部的第一项
返回值:删除的项
改变原数组
var arr = [1, 2, 3, 4, 5, 6];
var result = arr.shift( );
console.log( arr); //[2, 3, 4, 5, 6]
console.log( result ); //1
unshift( ):头部添加任一项
返回值:新数组的长度
该变原数组
var arr = [1, 2, 3, 4, 5, 6];
var newLength = arr.unshift(22, 34, 12);
console.log(arr); //[22, 34, 12,1, 2, 3, 4, 5, 6]
console.log("数组的新长度是"+ newLength); //9
pop( ) 用于删除尾部一项
返回值:删除的项
改变原数组
var arr = [1, 2, 3, 4, 5, 6];
var result = arr.pop( );
console.log(arr); //[1, 2, 3, 4, 5]
console.log("从尾部被移除的是:"+reuslt); //6
push() 用于往尾部增加任意项
返回值:新数组
该改变原数组
var arr1 = [1,2,3,4,5,6]
var result = arr1.push(11,22,33);
cosole.log(arr1); //[1, 2, 3, 4, 5, 6, 11, 22, 33]
sort( ) 用于排序,参数是一个函数,会改变原数组
返回值是原数组
函数参数:a-b:升序 b-a:降序
var arr =[1,45,77,8,9,55,354];
arr.sort(function(a,b) {
return a - b;
));
console. log(arr)
arr.sort(functio(a,b){
return b-a;
})
console.log(arr);
reverse( ) 用于将数组的顺序颠倒,会影响原数组
返回值是原数组
var arr =["a1","b1","c1", "d1"];
var arrl = arr.reverse();
console.log(arr); //["d1", "c1", "b1", "a1"]
console.log(arrl); //["d1", "c1", "b1", "a1"]
slice( ) 用于数组的截取,不改变原数组
返回值是新数组
参数:
两个参数:第一个参数表示截取开始的位置(包含),第二个参数表示截取结束的位置(不包含)
一个参数:表示从该位置开始截取,截取到最后,可以是整数,也可以是负数
ar arr=[1,2,3,4,5,6,7,8];
var arr1=arr.slice(1,4);
console. log(arr); //[1, 2, 3, 4, 5, 6, 7, 8]
console. log(arr1); //[2, 3, 4]
splice( ) 用于数组的操作
参数:
第一个参数表示删除的位置
第二个参数表示几个
第三个参数以及后面的每一个参数 表示从删除的位置插入
//增加
var arr=[1,2,3,4,5,6];
arr.splice(4, 0, 666)
console. log(arr); //[1, 2, 3, 4, 666, 5, 6]
//删除
var arr=[1,2,3,4,5,6];
arr .splice(1, 4);
console. log(arr); // [1,5, 6]
//修改
var arr=[1,2,3,4,5,6];
arr .splice(2, 3, 666,777,888,999)
console. log(arr); [1, 2, 666, 777, 888, 999, 6]
indexOf( ) 用于数组成员的精确查找
var arr=[1,2,3,4,5,6];
var idx = arr. indexOf(4);
console. log(idx); // 3
var idx1 = arr. indexOf(7);
console. log(idx1); // -1
join( ) 用于将数组的成员以规定的字符串拼接
var arr=[1,2,3,4,5,6];
var str = arr.join(); //如果没有参数默认使用,
console.log(str); //1,2,3,4,5,6
var arr1=[1,2,3,4,5,6,[1,2,3,4]];
var str1 = arr1.join("-"); //自定义参数
console. log(str1); //1-2-3-4-5-6-1,2,3,4
toString( )
var arr = [1,2,3,4,5,6];
console. log(arr.toString()); //1,2,3,4,5,6
var num = 10;
console.log(num.toString()); //(字符串)10
var bool = true;
console. log(bool, bool.toString()) //true "true"