JS day06—数组

1.数组的定义:

   1.构造方法:

	var arr = new Array(1,2,3,4,5,6);

<1>new:在堆内存开辟空间的关键字。

<2>Array:数组数据类型。

2.字面量:

var arr1 = [1,2,3,4,5,6];

<1>参数可以为任意值。

2.数组元素的访问:

数组[下标];

<1>下标:索引,基于0的连续自然数(可为变量)。

<2>数组下标的取值范围:0~元素个数-1。

<3>数组长度:length

<4>数组千万不能越界访问

3.数组的遍历:

定义:对数组的全部元素执行某种相同的操作

    for循环可以实现对数组的遍历。

var arr =[1,2,3,4,5,6,7,8,3,5,6,7];
	for (var i =0;i<arr.length;i++){
		console.log(arr[i]);//把所有元素都遍历出来
	}

数组的逆序:

var arr = [1,4,6,7,9,3,5,8];
	var t =0;
	var len = arr.length;
	for(var i=0;i<arr.length/2;i++){
		t=arr[i];
		arr[i]=arr[len-1-i];
		
		arr[len-1-i]=t;
	}
	console.log(arr);

4.数组的API(函数):

1.push:

   功能:尾插一个或多个元素

   参数:push(x1[x2.....xn]);

  返回值:尾插后的新数组的长度

2.pop:

  功能:尾删

  参数:无

  返回值:被删除的元素

3.unshift:

功能:头插一个或多个元素

参数:unshift(x1[x2.....xn]);

返回值:新数组的长度

4.shift:

功能:头删

参数:无

返回值:被删除的元素

5.reverse:----------直接修改原数组

功能:逆序

参数:无

返回值:无

6.splice:

功能:删除指定元素且用新的元素替代

参数:splice(起始位置,偏移量,[替换元素]);

返回值:被删除的元素,其实是一个数组

var arr=[1,2,3,5,6];
var arr1=arr.splice(1,3,4,3,6);//从下标为1的位置,向后偏移三位,加上4,3,6
console.log(arr1);//1,1,4,3,6,5,6

7.concat:

功能:数组的拼接

参数:concat(数组)

返回值:被拼接的新数组

8.join:

功能:将数组转化为字符串

参数:jion([字符分割符])

返回值:被分割的字符串

9.slice:

功能:数组的截取

参数:slice(起始位置,结束位置)       [左闭右开)

返回值:截取的数组

5.冒泡排序:

两两比较,每趟找出最大值或最小值

var arr =[2,4,6,3,8,1,9];//从大到小排序
	var t=0;
	for(var i=0;i<arr.length-1;i++){
		for(var x=0;x<arr.length-1-i;x++){
			if(arr[x]<arr[x+1]){
				t=arr[x];
				arr[x]=arr[x+1];
				arr[x+1]=t;
			}
		}
	}
	console.log(arr);

6.选择排序:

// 选择排序:将数组中的元素从小到大排序
	// 思路:i控制指定位置
	//      k控制目标位置
	// 	 k=i时用k来查找目标位置
	// 	 最后交换arr[k]和arr[i]
function fn(arr){
	var arr=[1,4,6,3,7,2,8,5];
	var k=0;
	var t =0;
	for(var i=0;i<arr.length-1;i++){//趟数
		k=i;
		for(var j=i+1;j<arr.length;j++){//次数
			if(arr[k]>arr[j]){//选择排序不是每次都进行交换,一趟只交换一次
				k=j;
			}
		}
		//经过内层循环,k得到是的最小元素所对应的下标
		t=arr[i];
		arr[i]=arr[k];
		arr[k]=t;
		}
		return arr;
		
	}
	console.log(fn());

7.json对象:

  1.json:

           是一种容器(数组格式),将多个繁琐的属性或方法封装成一个整体

      定义:由若干个键值对构成的,一组以上的键值对用逗号分开

     语法:

var stu ={
		   key1:value1,
		   key2:value2,.....//key全部用双引号括起来(习惯问题)
	   }

 2.json对象属性的使用:

    方法1:对象名.属性名

   方法2:对象名["索引"]

             索引可以为变量,且不用双括号括起

 例:定义一个对象他有的属性为名字,年龄,性别....
	   var stu={
		   "name":"呆毛",
		   "age":22,
		   "gender":"M"
	   }

        方法1:对象名.属性名
              console.log(stu.name,stu.age,stu.gender);
		方法2:下标法
		    对象名["索引"]
			var str ="render";
			console.log(stu["name"],stu["age"],stu[str]);

3.for....in....  (遍历索引)

语法:

for(var 索引变量名 in 容器){
			  循环体
		  }

注意事项:for....in....中不能用打点的方法

4.添加自定义属性:

  对象名.新的属性名=数值;

注意事项:有则修改,无则添加

5.添加方法的json对象:

var stu={
				   "name":"呆毛",
				   "age":22,
				   "eat":function(){
					   console.log("eat");
				   },
		"showValue":function(){
			console.log(this.name,this.age);
			this.eat();
		}
		}
		console.log(stu.name,stu.age);
		stu.eat();
		stu.showValue();

如果某成员方法要使用其他的成员属性或方法必须加this前缀(this目前代表调用该函数的对象本身)

8.严格模式:

严格模式:无法使用未被声明(定义)的变量,但是不限制声明顺序

"use strict"

9.数组ES5新增方法:

1.indexof

功能:查找目标元素,找到返回下标,找不到返回-1

参数:indexof(目标元素)

返回值:找到返回下标,找不到返回-1

注意事项:只能查找第一个出现的元素的下标

×××数组去重:

var arr = [1,1,2,3,4,5,2,3];
		var arr1 =[];
		for(var i=0;i<arr.length;i++){
			if(arr1.indexOf(arr[i]) ==-1){
				arr1.push(arr[i]);
			}
		}
		console.log(arr1);

2.forEach:

功能:对数组的所以元素执行某种相同的操作

参数:forEach(回调函数);

回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])

返回值:无

3.map:

功能:对数组的所以元素执行某种相同的操作

参数:map(回调函数);

回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])

返回值:用回调函数return的数据构成一个数组

4.filter:

功能:按条件过滤元素

参数:filter(回调函数);

回调函数参数:回调函数(数组元素的值,[下标,元素所在的数组])

返回值:根据当前回调函数return的布尔值,返回当前元素本身  (true则返回,false则无事发生)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值