逆袭班学习之数组—2

数组的越界
当缩印一个不存在的下标时,称之为数组越界,得到的结果是undefined
数组和对象类型的遍历(for)
整数数组/字符串数组/对象数组/二维数组
遍历: 就是把数组中的每个元素从头到尾都访问一次(类似我们每天早上学生的点名)。
我们可以通过 for 循环索引遍历数组中的每一项
var arr = ['red','green', 'blue'];
for(var i = 0; i < arr.length; i++){
    console.log(arrStus[i]); 
}
For in
forvar i in arr)I 是下标; 但这里的下标i是字符串 
for in 的特点
结合上面的两个例子,分析得出:
for ... in 循环返回的值都是数据结构的 键值名。
遍历对象返回的对象的key值,遍历数组返回的数组的下标(key)for ... in 循环不仅可以遍历数字键名,还会遍历原型上的值和手动添加的其他键。如——例3
特别情况下, for ... in 循环会以任意的顺序遍历键名
总结一句: for in 循环特别适合遍历对象。
无法遍历伪数组

For in 遍历对象
for(var i in obj) i是属性名;这里的i也是字符串
For of(ES6)
 forvar v of arr)v 是属性值 
不能遍历对象
for of 特点
for of 循环用来获取一对键值对中的值,for in 获取的是 键名
一个数据结构只要部署了 Symbol.iterator 属性, 就被视为具有 iterator接口, 就可以使用 for of循环。
对象,没有 Symbol.iterator这个属性,所以使用 for of会报 obj is not iterable
for of 不同与 forEach, 它可以与 breakcontinuereturn 配合使用,也就是说 for of 循环可以随时退出循环。
提供了遍历所有数据结构的统一接口
也不能遍历伪数组

只要有 iterator 接口的数据结构,都可以使用 for of循环。
数组 Array
Map结构
Set结构
String
arguments对象
Nodelist对象, 就是获取的dom列表集合
让对象可以使用 for of循环怎么办?使用 Object.keys() 获取对象的 key值集合后,再使用 for of
数组的排序(冒泡,选择)
数组的冒泡排序
http://v.youku.com/v_show/id_XMzMyOTAyMzQ0.html
思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。
即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
		
		var arr = [5,1,3,2,4];
		//1,5,3,2,4
		//1 , 3,5,2,4
		//1,3   2,5,4
		//1,3,2    4,      5
		//外层循环 执行4 次,每次找到一个最大的数字放在 尾部
		for(var i=0;i<arr.length-1;i++){
			console.log(i)
			for(let j=0;j<arr.length-1-i;j++){
				if(arr[j]>arr[j+1]){
					//交换数组两个元素的值
					var t = arr[j];
					arr[j] = arr[j+1]
					arr[j+1] = t;	
				}
			}
		}
选择排序
思路分析:选择排序和冒泡排序类似,跟冒泡不同之处在于,它不是每比较一次就调换位置,
而是一轮比较完毕,找到最大值(或者最小值)之后,将其放在正确的位置,其他数的位置不变。
     //选择排序 ,每次选择一个最小值 ,放特定位置上
 //外层控制比较轮数,每轮找到最小值 跟i位置上的元素进行交换
        for(var i=0;i<array.length-1;i++){
            var minIndex = i;
            var min = array[i];
            for(var j=i+1;j<array.length;j++){
                //当循环出来的元素 比最小值 小的时候,最小值发生变化,最小值索引也变化
                if(min > array[j]){
                    min = array[j];
                    minIndex = j;
                }
            }
            //确定了最小值以后需要给  i位置上的元素进行交换
            if(minIndex != i){
                var tmp = array[i];
                array[i] = array[minIndex];
                array[minIndex] = tmp;
            }
        }
发布了9 篇原创文章 · 获赞 4 · 访问量 96

猜你喜欢

转载自blog.csdn.net/weixin_46370558/article/details/104709753