[js点滴]JavaScript关于数组的方法总结

//	1.数组的写法
//  1.1字面量写法
	var arr = [1,2,3,4,5];
//	1.2 构造函数写法
    var arr1 = new Array(2);//创建一个长度为2的一个数组对象
//  1.3 不加new关键字写法
    var arr2 = Array(2);//创建一个长度为2的一个数组对象
	
	var arr3 = new Array();//创建一个空数组
	var arr4 = new Array("helloworld","world");//["helloworld","world"];
	var arr5 = new Array(1,2);//[1,2];
	
//	2.如果指定了数组元素的个数,而没有指定数组具体的元素,则打印的每一个元素都是undefined(没有任何值),但是可以取得到length属性,取不到键名例如(2 in arr6;//false).
   var arr6 = new Array(4);
   arr6[1];//undefined
   arr6[2];//
   (2 in arr6);  //false
   arr6.length; //4
   
// 3.数组方法
// 3.1作用于Array上的方法
// Array.isArray():来判断一个值是否为数组,返回值(true或者false)
   var array1 = [1,2,3,4,5,6];
   console.log(typeof array1);//object
   console.log(Array.isArray(array1));//true
 //注意:typeof只能确定值是属于6大数据类型中的某一类型,不能具体确定该值到底属于对象中的数组还是函数等类型.

//3.2 数组实例方法(作用于自己创建的数组变量上的方法)
// 3.2.1 valueOf():返回数组本身
    var array2 = ["string","hello",1,2,3];
    var res = array2.valueOf();//返回的是数组本身(数组对象)
    
    var res1 = toString(array2.toString());//返回的字符串
    
    var array3 = [1,2,3,4,['a','b','c']];
    alert(array3.toString());"1,2,3,4,'a','b','c'"
    
// 3.2.2往数组末尾添加一个或多个元素 push() 返回值一定是添加新元素后的数组的长度,且原有数组发生了改变.
    var length = array2.length;
    array2[length] = "abc";//["string","hello",1,2,3,"abc"]
    
    var a = [1,2,3,4];
    var res = a.push(1);//res = 5;
    alert(a);//a = [1,2,3,4,1]
   a.push(1,2,3,4,5,"hello",{},true);//添加多个
   alert(a);
   
//3.2.2 练习
  var a1 = [1,2,3,4,5];
  var a2 = [7,8,9,10];
  //结果:[1,2,3,4,5,7,8,9,10]
  var len1 = a1.length;
  var len2 = a2.length;
  for (var i = len1;i < len1+len2;i++) {
  	a1[i] = a2[i-len1];
  }
 
// 3.2.3 pop():用于删除数组的最后一个元素,返回值是返回删除的这个元素,该数组也改变了原有的数组
var a3  =[1,2,3];
var res4 = a3.pop();//[1,2]; res4 = 3;

var a4 = [];
var res5 = a4.pop();//res5 = undefined

//3.2.4 join()该方法以join中参数来分割字符串,将数组所有数据成员组成一个字符串返回,如果不提供参数,默认以逗号分割
var a5 = [1,2,3,4];
a5.join();//默认:"1,2,3,4,5"
var res6 = a5.join("|");//"1|2|3|4|5"

var a6 = [undefined,null];
alert(a6.join("$"));//"$"

var a7 = [12,,13];
alert(a3.join("*"));//"12**13"


//3.2.5 concat()多个数组的合并,返回合并后的数组,原有数组不变
var a8 = [1,2,3];
var a9 = [4,5,6,7];
var a10 = a8.concat(a9);
alert(a10);//[1,2,3,4,5,6,7]
alert(a8);//[1,2,3]

a8.concat(1,2,3,5,6,7);//[1,2,3,1,2,3,4,5,6,7]
//等效于
a8.concat([1,2,3,4,5,6,7]);[1,2,3,1,2,3,4,5,6,7]
//合并多个数组
a8.concat([1,2],[23,4,5],[1,2,3,4]);

//3.2.6 shift用于删除数组第一个元素,返回值为删除的这个元素,该方法会改变原有方法
var a11 =  [1,2,3];
a11.shift();//[2,3];

//清空数组
var a12  = [1,2,3,4,5,6,7];
//for (var i = 0;i < a12.length;i++) {
//	a12.shift();
//}
//a12;//[];

while (a12.shift()){}
alert(a12);//[];


//3.2.7 unshift():向数组的第一个位置添加一个或多个元素,并返回添加新元素后的数组长度,同样会改变原有数组
var a13  = [1,2,3,4,5];
var len13 = a13.unshift("hello");//a13=["hello",1,2,3,4,5];
a13.unshift(6,7,8,9);//[6,7,8,9,1,2,3,4,5];



//var a14  = [1,2,3,4,5,6,7,8,9];
结果:[9,8,7,6,5,4,3,2,1];
//var a15 = [];
//for (var i = a14.length;i >0;i--) {
//	a15.push(a14[i-1]);
//}

//for (var i = 0;i < a14.length;i++) {
//	a15.push(a14[a14.length-i-1]);
//	
	a15[i] = a14[a14.length-i-1];
//}


//function jiechen( n ){
//  return ( n <= 1 ) ? 1 : n*jiechen(n-1);
//}
//
//console.log("jiecheng===>>"+jiechen(3));

//3.2.8 reverse():用于颠倒数组中元素的顺序,返回值:改变后的数组.改变了原有的数组.
 var a16 = [1,2,3,4];
 a16.reverse();
 console.log(a16);

//3.2.9 slice():提取原数组的一部分,返回一个新数组,原数组不变
//slice()中有两个参数,第一个参数其实位置(从0开始),第二个参数是终止位置(该位置元素不包含).如果省略第二个参数,从开始返回原数组的最后一个元素.
var a17 = [1,2,34,5];
var a18 = a17.slice(0,2);//[1,2];
console.log(a18);
var a19 = a17.slice(1);//[2,34,5]
console.log(a19);
//slice()没有参数则返回的全部
var a20 = a17.slice();//[1,2,34,5];

//3.2.10 splice():用于删除数组的一部分元素,返回值:返回被删除的元素数组.删除同时还可以添加元素.该方法也改变了原有的数组.
//语法:
/*splice(start_index,del_count,add_elment1,add_elment1,...);
第一个参数:删除元素的起始位置
第二个参数:从起始位置(包括起始位置)删除元素的个数
第二个以后的参数:要添加的元素
*/
var a21 = [1,2,3,4,5,6,7];
a21.splice(2,1,"ass","awe");//[1,2,"ass","awe",4,5,6,7]
console.log("a21==="+a21);


var a22 = [56,34,78,12,32];
//从小到大排序
for (var i = 0;i < a22.length;i++) {
	for (var j = 0;j < a22.length-i-1;j++) {
		if (a22[j]>a22[j+1]) {
			var temp = a22[j];
			a22[j] = a22[j+1];
			a22[j+1] = temp;
		}
	}
}
/*
原始数组:[56,34,78,12,32]
第一趟i=0:
第一次j=0:a22[0]>a22[1]: 34,56,78,12,32
第二次j=1:a22[1]>a22[2]: 34,56,78,12,32
第三次j=2:a22[2]>a22[3]: 34,56,12,78,32
第四次j=3:a22[3]>a22[4]: 34,56,12,32,78
第二趟i=1:
第一次:j=0:a22[0]>a22[1]:34,56,12,32,78
第二次:j=1:a22[1]>a22[2]:34,12,56,32,78
第三次:j=2:a22[2]>a22[3]:34,12,32,56,78

第三趟i=2:
第一次:j=0:a22[0]>a22[1]:12,34,32,56,78
第二次:j=1:a22[1]>a22[2]:12,32,34,56,78

第四趟i=3:
第一次:j=0:a22[0]>a22[1]:12,32,34,56,78
console.log(a22);
*/
/*冒泡法比较公式:
for (var i = 0;i < arrays.length;i++) {
	for(var j = 0;j < arrays.length-i-1 ){
		if(arrays[j]>arrays[j+1]){
			var temp = arrays[j];
			arrays[j] = arrays[j+1];
			arrays[j+1] = temp;
		}
	}
}
*/
//3.2.11 sort()对数组进行排序,按从小到大来排序
['a','c','b','d'].sort();//['a','b','c','d']

//3.2.12 数组的遍历
//forEach(),遍历数组的所有成员,执行某种操作,没有返回值
var els = [11,22,33,44,55];
//里面第一个参数:具体遍历的元素11,12,...
//第二个参数:元素索引 参数省略
//第三个参数:原数组 参数可省略
//forEach()中的参数是函数
els.forEach(function(element,index,array){
	console.log("element==>"+element);
	console.log("index==>"+index);
	console.log("array==>"+array);
});


//3.2.13 filter()过滤函数,里面参数也是个函数,返回值:返回符合参数条件所有元素组成的一个数组.
//里面第一个参数:具体遍历的元素11,12,...
//第二个参数:元素索引 参数省略
//第三个参数:原数组 参数可省略
var els2 = [1,2,3,4,5,6];

var res100 = els2.filter(function(element,index,array){
	return index%2===0;
});
console.log(res100);



  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图解AI

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值