ES5和冒泡选择排序

一、ES5的新增

  1. ES5:ECMAScript5
  2. 在ES5中,新增了一种编写代码的模式,严格模式
    • 为了消除代码中不合理,不严谨,隐患之处
    • 体现了更好的发展方向
    • 提升了代码的执行效率
  3. 如何开启
    • 在作用域的第一行放置字符串:“use strict”
      • 当前作用域就是严格模式,需要遵守严格模式的开发规范书写代码
    • 配合匿名函数,开启伪全局严格模式
  4. 严格模式开启之后的变更
    • 变量必须先声明,再使用
    • 函数的形参不允许重复
    • 函数的arguments保存的实参,不会受到形参的改变而影响
    • 函数的arguments不允许使用callee(非严格模式下arguments.callee是函数自身)
    • 没有明确隶属对象的函数中的this,不指向window,指向undefined
    • 0开头的八进制被禁止
    • with语句被禁止使用
  5. 数组的排序
    • 冒泡,选择
    • 冒泡
		var arr =[5,4,3,2,1];
		//比较次数的结构,多行多列用双for循环
		//0-1,1-2,2-3,3-4		length-1 -0行 次
		//0-1,1-2,2-3,			length-1 -1行 次
		//0-1,1-2				length-1 -2行 次
		//0-1					length-1 -3行 次
		//行:arr.length-1次
		for(var i=0;i<arr.length-1;i++){
			for(var j=0;j<arr.length-(1+i);j++){
				if(arr[j]>arr[j+1]){
				var temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
				}
			}
		}
		console.log(arr);
  • 选择排序
    • 拿到数组的每一个数据,从左向右,依次使用每一个数据,和后面所有数据相比较,得到最小的交换
    var arr = [1,3,5,4,2];
    //冒泡,每次比较都有可能交换一次,交换意味着操作数组
    //选择,每次比较,绝对不交换,只是在记录最小值,一轮结束后,在做交换,将最小值和第一位交换
    //比较次数的结构:多行多列
    //0-1,0-2,0-3,0-4			0行~length-1
    //1-2,1-3,1-4				1行~length-1
    //2-3,2-4					2行~length-1
    //3-4						3行~length-1
    //行:length-1   4次
    for(var i =0;i<arr.length-1;i++){
    //每轮开始之前,将当前位数据保存到临时变量,同时存储索引
    //假设这个临时变量中保存的是最小值
    	var min = arr[i];
    	var minIndex = i;
    	for(var j=i+1;j<arr.length;j++){
    	//验证,临时变量中保存的是否是最小值
    		if(min > arr[j]){
    		//修改临时变量,让他保存真正的最小值
    			min = arr[j];
    			//同时记录最小值的索引
    			minIndex = j;
    		}
    	}
    	//一轮结束后,交换数组中的数据
    	//一定要先将当前位数据,放在最小值的位置。否则会造成数据的丢失
    	arr[minIndex] = arr[i];
    	//再将最小值,放在当前位,若不信可以把这2行代码交换运行即可
    	arr[i] = min;
    }
    console.log(arr);
    
方法功能参数返回值是否改变原数据
indexOf()检测数组中第一次出现这个元素的位置(索引)参数1,要查找的元素,参数2,从第几个开始查有就返回相应的索引,没有就返回-1
forEach()遍历数组函数,该函数又拥有三个参数,第一个:数据,第二个,索引,第三个,数组自身无或undefined
map()遍历数组,可以返回新数组函数,该函数又拥有三个参数,第一个:数据,第二个,索引,第三个,数组自身新数组,保存了回调函数每次执行时的返回数据
filter()遍历数组,可以过滤数据(返回新数组)函数,该函数又拥有三个参数,第一个:数据,第二个,索引,第三个,数组自身,该函数可以有返回值,返回布尔值新数组,保存了回调函数每次执行时返回true时的数组的数据
some()遍历数组 ,根据条件查询,得到布尔值,只要出现一次true,最终结果就是true函数,该函数又拥有三个参数,第一个:数据,第二个,索引,第三个,数组自身,返回布尔值作为参数的函数的返回值中是否出现了true,只要出现了true,结果就是true
every()遍历数组,根据条件查询,得到布尔值,全部为true,最终结果才是true作为参数的函数的返回值中全部是true,结果才是true布尔值
reduce()遍历数组,归并,对于空数组是不会执行回调函数的函数,有4个参数,第一个:第一遍执行时,reduce()的第二个参数或数组的第一个数据。执行之后,是之前执行时的返回值,第二个:数组的数据,第三个,索引,第四个:自身是回调函数最后一次执行时的返回值
var arr = [3,2,5];
var res = arr.reduce(function(prev,now,indx,arr){
console.log(prew);//3
return prev + now;
//适合求和
},0);
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值