//数组的创建
//1.通过数组字面量创建数组
var arr=[ ]; //创建一个空数组
var arr1=[1,2,3,'8']; //创建一个有数组元素的数组,数组元素之间用逗号隔开
//2.利用new Array( )创建 数组
var arr2=new Array( ); //创建一个空数组
var arr3=new Array(5); //创建一个长度为5的数组
var arr4=new Array(1,2) //创建一个数组,数组内有两个元素,分别为1和2
//数组长度
//数组长度通过 .length 获取,如 :
console.log(arr4.length); //返回就是2,表示数组长度为2,对应有2个数组元素
//数组索引
//数组内每一个元素对应着一个索引号,索引号默认从0开始(0,1,2,···)
//如:
var arr5=[8,7,5,4,2,3]; //里面的第一个元素8对应的索引号就为0,元素7对应索引1,元素5对应索引3···
//数组元素的获取
//通过 数组名[索引号] 来获取 比如:
console.log(arr5[0]); //返回的就是8
console.log(arr5[3]); //返回的就是4
//数组的遍历
//数组遍历,就是这个数组中 有多少个元素,就让循环循环几次,然后若有需要对每个数组元素做对应处理的程序,需要写在循环内部
var arr=[1,2,3,4,5,6];
//遍历这个数组↓
for(var i=0;i<arr.length;i++){
console.log(arr[i])
}//因为数组索引号从0开始,所以循环也从0开始更加方便操作这个数组
//数组方法
var arr=[1,2,3,4,5]
//添加元素的方法
//push( ) 方法,在数组末尾添加数组元素(能添加一个或多个) 会改变原数组
arr.push(6);
console.log(arr); //返回的是 [1,2,3,4,5,6]
//unshift( )方法,在数组最前添加数组元素(能添加一个或多个) 会改变原数组
arr.unshift(0);
console.log(arr); //返回的是[0,1,2,3,4,5,6]
console.log(arr[1]); //返回的是1,所以在前添加元素,会让元数组元素索引号对应增加1
//concat( )方法
var newarr1=arr.concat(7,8);
console.log(newarr);//返回的是[0,1,2,3,4,5,6,7,8]
console.log(arr); //返回的是原数组[0,1,2,3,4,5,6]
var newarr2=arr.concat([7,8]);
console.log(newarr2); //返回的是[0,1,2,3,4,5,6,7,8]
console.log(arr); //返回的依然是原数组[0,1,2,3,4,5,6]
var newarr3=arr.concat([7,8],[9,10])
console.log(newarr3); //返回的是[0,1,2,3,4,5,6,7,8,9,10]
console.log(arr); //返回的依然是原数组[0,1,2,3,4,5,6]
var newarr4=arr.concat([7,8,[9,10]]);
console.log(newarr4); //返回的是[0,1,2,3,4,5,6,7,8,[9,10]]
console.log(arr); //返回的依然是原数组[0,1,2,3,4,5,6]
//concat( ) 方法总结:
//1.参数为非数组:直接在原数组后增加元素,并返回一个新数组
//2.参数为数组:将这个数组参数与原数组拼起来并返回一个新数组
//3.参数为数组,并且这个数组参数内的元素还有数组,拼接后不会将数组参数内的数组变成非数组
//删除数组元素的方法
//pop( )方法,删除数组的最后一个元素,只能删除一个,与push( )对应,会改变原数组,括号内不跟参数
arr.pop( );
console.log(arrr);//返回[0,1,2,3,4,5,]
//shift( )方法,删除数组的第一个元素,只能删除一个,与unshift( )对应,会改变原数组,括号内不跟参数
arr.shift( );
console.log(arr); //返回[1,2,3,4,5]
//截取数组片段 slice( )方法 返回一个新数组,不会改变原数组
//slice( )方法,传入两个人参数
//第一个参数:表示截取开始位置,包括开始
//为非负数:跟着索引号走就行
//为负数 :表示倒数第几开始,往索引号增大的方向截取,-1就是倒数第一个开始,-3就是倒数第三个开始
//第二个参数
//为空:表示一直截取到最后一个元素,包括最后一个
//为非负数:跟着索引号走,但是不包括这个结束的元素
//为负数:表示倒数第几结束,倒是也不包括结束的这个元素
console.log(arr.slice(2,4)); //返回[3,4]
console.log(arr.slice(2,-1)); //返回[3,4]
console.log(arr.slice(2)); //返回[3,4,5]
console.log(arr.slice(-3,4)); //返回[3]
console.log(arr); //依然返回原数组[1,2,3,4,5]
//删除或插入数组元素 splice( ) 方法,返回被删除元素组成的数组 , 会修改原数组
splice( )方法,传入参数情况
//传入一个参数,表示索引号,自这个索引号开始一直到最后一个元素都被删除
console.log(arr.splice(3)); //返回的[4,5]
console.log(arr); //返回[1,2,3]
//传入两个参数,第一参数意义同上,第二个参数表示删除几个
console.log(arr.splice(1,2)); //返回[2,3]
console.log(arr); //返回[1]
//传入两个以上的参数,前两个参数依然表示删除数组元素。
//而后面的参数,则是要插入数组的元素,可以为任意数据类型,插入位置为第一个参数指定的位置
console.log(arr.splice(1,0,2,3,4,5));//表示从索引为1的位置开始,删除0个元素,
//并且从索引为1的位置,添加元素2,3,4,5; 返回的是被删除的数组组成的元素,所以返回了一个空数组
console.log(arr); //返回[1,2,3,4,5]
//数组转换为字符串方法 toString( ) 和 join( )
//1.toString( )方法
//将数组直接转换为 数组元素用逗号相连 的字符串
var arr=[1,'2',[3,4],5];
var result=arr.toString( );
console.log(result); //结果为 '1,2,3,4,5'
console.log(arr) //结果依然为原数组 [1,'2',[3,4],5]
//2.join( )方法
//将数组转换为字符串 ,参数为一个字符串,转换出来的字符串会以这个参数字符串作为每个数组之间的连接符
var resule=arr.join( '!!' );
console.log(result); //返回结果为 '1!!2!!3,4!!5'。可以看出,与toString( )方法得到的结果有所不同
console.log(arr); //结果依然为原数组 [1,'2',[3,4],5]
//不跟参数时,表示默认使用逗号作为连接符
var resule=arr.join( );
console.log(result); //结果为 '1,2,3,4,5'
//数组翻转 reverse( )方法 改变原数组
var arr=[1,2,3,4];
console.log(arr.reverse( )); //[4,3,2,1]
console.log(arr); //[4,3,2,1]
//根据元素找索引号
//indexOf( ) 从前往后找
var arr=['pink','red','blue','purple','red'];
console.log(arr.indexOf('red')); //返回1,即为找到的第一个复合条件元素索引号
console.log(arr.indexOf('green')); //返回-1,因为原数组中没找到这个元素
//lastIndexOf( ) 从后往前找
console.log(arr.lastIndexOf('red')); //返回4
console.log(arr.lastIndexOf('green')); //返回-1,因为原数组中没找到这个元素
//数组排序 sort( )方法 会改变原数组
var arr=['5','1',4,2,'3']
//不跟参数时
arr.sort( );
console.log(arr); //返回:["1", 2, "3", 4, "5"]
//不跟参数时,仅仅能够升序排序,并且,只会比较第一位数,比如18只会取1来比
//跟参数
var arr=[1,88,5,6,21,33,67];
arr.sort(function (a,b){
return a-b; //升序排列
//return b-a; 降序排列
})
console.log(arr); //返回[1, 5, 6, 21, 33, 67, 88]