Js笔记 冒泡排序 函数封装冒泡 sort 排序 arguments特性

403 阅读2分钟
    //  冒泡排序
    //  一种算法,可以让数据按从小到大或从大到小进行排列显示
    //  观察其执行过程,找到规律转化成代码,就是算法


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

    //  Js函数
    //  内容  1 函数概念 2 函数使用 3 函数参数 4 函数返回值
    //  5 arguments的使用 6 函数案例 7 函数的两种声明方式
    //  函数就是封装了一段可以被重复调用执行的代码块。通过此代码块可以实现大量的代码重复使用
    
    var sum =0;
    for (var i = 1; i <= 100; i++) {
        sum += i;
    }
    console.log(sum);

    function getSum(num1,num2) {
        var sum = 0;
        for (var i = num1; i <= num2; i++) {
            sum += i;
        }
        console.log(sum);
        
    }
    getSum(1,100);

    // //  声明函数和调用函数
    // //  function 函数名() {
        // 函数体
    // }
    function sayHi() {
        console.log('hi~');
    }
    //  function 是函数关键词 全部小写
    // 函数是做某件事情,函数名一般是动词
    // 不调用函数 函数自己不执行
    // 调用函数需加小括号
    sayHi();
    // 封装就是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

    // 利用函数计算1-100的累加和
    function getSum() {
        var sum = 0;
        for (i = 1; i <= 100; i++) {
            sum += i;
        }
        console.log(sum);
    }
    getSum();

    // 利用函数的参数可以实现函数重复不同代码
    // function 函数名(形参1,形参2,...) {
    // 在声明括号里的是形参
    // }
    // 函数名(实参1,实参2,..)  在带调用函数的括号里是实参

    // 形参实参执行过程
    function cook(aru) {
        console.log(aru);
    }
    cook('酸辣土豆丝'); 
    cook('肘子'); 
    //函数参数可有也可以没有
    //参数在函数内部某些值不能固定,可以通过调用函数时传递不同的值进去


    // 函数案例 
    // 1.利用函数求任意两个数的和
    function getSum(add1,add2) {
        console.log(add1+add2);
    }
    getSum(200,100);

    // 利用函数求任意两个数之间的和
    
    function getSums(num5,num6) {
        var sum = 0;
        for (i = num5; i <= num6; i++) {
            sum += i
        }
        console.log(sum);
    }
    getSums(1,100)
    // 注意点
    // (1)多个参数之间用逗号隔开
    // 形参可以看做不用声明的变量


    // 形参实参个数不匹配的情况
    // 1. 如果形参实参个数一样则正常输出结果
    // 如果实参个数多于形参个数 那么取形参的个数
    // 如果实参少于形参 那么多出的形参定义为undefined


    // 函数返回值 return
    // function 函数名() {
        // return(返回需要的结果);
    // }
    // 函数名();
    // (1)函数是实现某种功能 ,最终结果需要返回给函数的调用者 函数名() 
    // 通过 return 实现的
    // (2)只要函数遇到return 就把后面的结果 返回给调用者 函数名() = return 后面的结果
    // 代码验证
    function cook(aru) {
        return aru;
    }
    console.log(cook('玉米'));

    function getSum(num1,num2) {
        return num1 + num2;
    }
    console.log(getSum(1,2));

    // 用函数 求两个数的最大值
    function getMax(num3,num4) {
        // if (num3>num4) {
        //     return num3;
        // } else {
        //     return num4;
        // }
        return num3 > num4 ? num3:num4;
    }
    console.log(getMax(3,100));
    console.log(getMax(14012,3010));

     //利用函数求数组中[5,2,99,101,67,77]的最大值
    function getArrMax(arr) {
        var max = arr[0];
        for (var i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }
    var re = getArrMax([5,2,99,101,67,77]);
    console.log(re);


    tostring 的用法
    let a = {}
    let b = [1, 2, 3]
    let c = '123'
    let d = function(){ console.log('fn') }

    console.log(a.toString())   // '[object Object]'
    console.log(b.toString())   // '1,2,3'
    console.log(c.toString())   // '123'
    console.log(d.toString())   // 'function(){ console.log('fn') }'

    var arr = [5,2,99,101,67,77];
    console.log(arr.toString());


    // arguments 函数的内置对像 存储了传递的所有实参
    // 且arguments 是一个伪数组
    // 具有以下特性 1 具有数组的length属性 2 按照索引方式储存的 3 没有pop()  push ()

    // 利用函数求任意个数最大值
    function getMax() {
        var max = arguments[0];
        for (i = 1; i < arguments.length; i++) {
            if (arguments[i] > max) {
                max = arguments[i];
            }
        }
        return max;
    }
    console.log(getMax(1,2,3));

    // 利用函数翻转任意数组 revers 翻转
    function reverse(arr) {
        var newArr = []
        for (var i =arr.length - 1; i >= 0; i-- ) {
            newArr[newArr.length] = arr[i];
        }
        return newArr;
    }
    var arr1 = reverse([1,3,6,9])
    console.log(arr1);

    // 函数封装冒泡 sort 排序
    function sort(arr) {
        for (var i = 0; i < arr.length - 1; i++) {
            for (var j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j+1]) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
            return arr;
        }
    }
    var arr1 = sort([1,4,2,9])
    console.log(arr1);

    // 函数有两种声明方式   利用关键字声明(命名函数)
    // 函数表达式(匿名函数)
    // var 变量名 = function() {};
    var fun = function () {
        console.log('函数表达式');
    }
    fun();
    // fun 是变量名 不是函数名
    // 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值  而函数表达式里存的是函数
    // 函数表达式也可以进行传递参数