JavaScript学习第七天

JavaScript数组的方法(迭代)

    var arr1=[7,8,9,11,28,36,54,88,96];
	var arr2=[12,18,24];
	var arr3=["O","P","Q","R","S","T","U"];

    // every(函数)检测数值元素的每个元素是否都符合条件
     函数:console.log(arr1.every(function(item){
		     return item>0     //true
		}))

    // some(函数) 检测数组元素中是否有元素符合指定条件。
    console.log(arr1.some(function(item){
			return item>11   //true
		}))
		

    // filter(函数) 检测数值元素,并返回符合条件所有元素的数组。
    console.log(arr1.filter(function(item){
			return item>11&&item<90
		}))

    // forEach(函数) 数组每个元素都执行一次回调函数。
    // 函数:function(value,index,arr){}
    // value:数组元素的值
    // index:索引
    // arr:数组本身
    var arr9=[];
		arr1.forEach(function(val,index,arr){
			arr9.push(val+11)
		})
		console.log(arr9)

    // for(var i=0;i<arr1.length;i++){
    //     console.log(arr1[i],i,arr1)
    // }

    // map() 通过指定函数处理数组的每个元素,并返回处理后的数组。
    console.log(arr1.map(function(item){
			return item+11
		}))

    // reduce(函数) 将数组元素计算为一个值(从左到右)。
    // function(total,val){}
    // total:总数
    // val:每一项的值
    console.log(arr1.reduce(function(sum,val){
			sum+=val;
			return sum/12;
		}))

    console.log(arr3.reduce(function(sum,val){
			sum+=val
			return sum
		}))

    // reduceRight(函数) 将数组元素计算为一个值(从右到左)。
    console.log(arr3.reduceRight(function(sum,val){
			sum+=val
			return sum
		}))


    // ES6新增的方法
    // keys() 返回数组的可迭代对象,包含原始数组的键(key)
    // entires() 返回数组可迭代的对象
        var mmm=arr2.entries()
		console.log(mmm.next().value);
		console.log(mmm.next().value);
		console.log(mmm.next().value);
		console.log(mmm.next().value);
		
		var nnn=arr2.keys();
		console.log(nnn.next().value);
		console.log(nnn.next().value);
		console.log(nnn.next().value);
		console.log(nnn.next().value);

JavaScript数组的排序方法

    var arr = [7, 8, 9, 2, 40, 60, 88, 5, 6, 'x', 15, 25, 35, "M", "H", "R", "e", "k"];
	var arr2 = [12, 16, 18];
	var arr3 = ["U", "V", "W", "X", "Y", "Z", "Q"];
	var arr5 = ["嘎嘎", 'g', 't', 'r', 13, 12, 11];
	
    // sort() 对数组元素进行排序  
    console.log(arr2.sort());
	console.log(arr3.sort());
	console.log(arr5.sort());


    // 依照 ASCII (字典) 数组的每一项都会执行toString(),得到字符串,对字符串排序
    var arr6 = [6, 7, 8, 65, 75, 85];
		console.log(arr6.sort()); 

    // 2.给sort(函数)  添加函数  比较函数
    // function up(a, b) {
    //     if (a < b) {
    //         return -1
    //     } else if (b < a) {
    //         return 1
    //     } else {
    //         return 0
    //     }
    // }
    // function down(a, b) {
    //     if (a > b) {
    //         return -1
    //     } else if (b > a) {
    //         return 1
    //     } else {
    //         return 0
    //     }
    // }

    // 简写
    function up(a,b){
        return a-b
    }
    function down(a,b){
        return b-a
    }
    console.log(arr6.sort(up))
    console.log(arr6.sort(down))    

JavaScript数组的冒泡排序

    var arr = [3, 4, 2,1];//[3,2,1,4][2,1,3,4][1,2,3,4]
    
    // 升序:将第一个元素于后续元素进行比较,如果前一个元素大于后一个元素互换位置,下一次拿上一次大的值于后续元素进行比较,如果前一个元素大于后一个元素互换位置,知道确定最大的元素
    // 选出第二大的元素
    // 选出第三大的元素
    // ... 
    // 最后两个元素进行对比
    // 下次对比次数比上次对此次数减一  

    for (var i = 0; i < arr.length - 1; i++) {
        // 循环比较的次数
        for (var j = 0; j < arr.length - i - 1; j++) {
            // console.log(arr[j])
            // 需要arr[j] 和 arr[j+1]进行比较
            if (arr[j] > arr[j + 1]) {
                // 互换位置
                // console.log("互换位置");
                var k;
                k = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = k;
            }
        }
        console.log(arr)
    }

   // 将外层for循环拆解
    // 当i=0时  
    // for (var j = 0; j < arr.length-1; j++) {
    //     // console.log(arr[j])
    //     // 需要arr[j] 和 arr[j+1]进行比较
    //     if (arr[j] > arr[j + 1]) {
    //         // 互换位置
    //         console.log("互换位置");
    // var k;
    // k=arr[j];
    // arr[j]=arr[j + 1];
    // arr[j + 1]=k;
    //     }
    // }
    // console.log(arr);

    // 当i=1时;
    // for (var j = 0; j < arr.length-2; j++) {
    //     // console.log(arr[j])
    //     // 需要arr[j] 和 arr[j+1]进行比较
    //     if (arr[j] > arr[j + 1]) {
    //         // 互换位置
    //         console.log("互换位置");
    //         var k;
    //         k=arr[j];
    //         arr[j]=arr[j + 1];
    //         arr[j + 1]=k;
    //     }
    // }
    // console.log(arr)

    // 当i=2时;
    // for (var j = 0; j < arr.length-3; j++) {
    //     // console.log(arr[j])
    //     // 需要arr[j] 和 arr[j+1]进行比较
    //     if (arr[j] > arr[j + 1]) {
    //         // 互换位置
    //         console.log("互换位置");
    //         var k;
    //         k=arr[j];
    //         arr[j]=arr[j + 1];
    //         arr[j + 1]=k;
    //     }
    // }
    // console.log(arr)

    // 两个变量互换值
    var a=10;
    var b=20;
    var c;
    c=a;
    a=b;
    b=c;
    // console.log(a,b)

    // 封装
     function babel(arr) {
        for (var i = 0; i < arr.length - 1; i++) {
            // 循环比较的次数
            for (var j = 0; j < arr.length - i - 1; j++) {
                // console.log(arr[j])
                // 需要arr[j] 和 arr[j+1]进行比较
                if (arr[j] > arr[j + 1]) {
                    // 互换位置
                    // console.log("互换位置");
                    var k;
                    k = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = k;
                }
            }
            // console.log(arr)
        }
        return arr
    }

    var arr2=[1,2,4,5,1,2,1,3,5,1,81,282,18]
    console.log(babel(arr));
    console.log(babel(arr2));    

JavaScript数组的选择排序

    var arr = [3, 4, 2, 1]; // [1, 4, 2, 3] [1, 2, 4, 3] [1, 2, 3, 4]

    // 选择排序:先定义最大值或最小值,然后将每个数组项于最值比较,取最值放到元素的最(左或右)端,层层比较,互换元素下标位置,再赋值。

    // 设:x为最大值,x和每一个数组项进行对比,如果比x大,互换元素的下标
    for (var i = 0; i < arr.length - 1; i++) {
        // 假设最值的索引
        var min = i; //第i个元素为最值
        // min=0;
        for (var j = i + 1; j < arr.length; j++) {
            // j=1 2 3 
            if (arr[j] < arr[min]) {
                min = j;// 取最小值的索引
                // console.log(j)
            }
        }
        var k = arr[i];
        arr[i] = arr[min];
        arr[min] = k;
        console.log(arr);
    }
    // console.log(arr);


    // 封装
    function choose(arr) {
        for (var i = 0; i < arr.length - 1; i++) {
            // 假设最值的索引
            var min = i; //第i个元素为最值
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[min]) {
                    min = j;
                    console.log(j)
                }
            }
            var k = arr[i];
            arr[i] = arr[min];
            arr[min] = k;
            // console.log(arr);
        }
        return arr
    }

    console.log(choose(arr));    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值