JS函数练习题

1、求一组数中的最大值和最小值,以及所在位置

 function maxArr(arr) {

            // 默认最大值和最小值都是第一个数
            var max = arr[0]
            var min = arr[0]
            for (i = 0; i < arr.length; i++) {

                if (max <= arr[i]) {
                    max = arr[i]
                    var maxNum = i

                }
                if (min >= arr[i]) {
                    min = arr[i]
                    var minNum = i

                }

            }

            console.log('最大值为' + max, '最大值的下标为' + maxNum);
            console.log('最小值为' + min, '最大值的下标为' + minNum);
        }

        maxArr([10, 23, 34, 53, 43, 32])

2、封装一个函数可以求任意个数的和

 function getSum() {
            sum = 0
            // 相当于遍历数组  i=0是从第一个开始
            for (var i = 0; i < arguments.length; i++) {
                sum += arguments[i]
            }
            return '它们的和为' + sum
        }

        var num = getSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,)
        console.log(num);

3、求斐波那契数列Fibonacci中的第n个数是多少?

  // 斐波那契数列特征:1 1 2 3 5 8 13 21...
        function fibonacciNumber(n) {
            // a是第一个数
            var a = 1
            // b是第二个数
            var b = 1
            // c是前两个数的和
            var c
            // 从第三个数开始循环
            for (i = 3; i <= n; i++) {
                // 第三个值等于前两个数相加
                c = a + b
                // 把b的值赋给a 循环后a还是相当于前两个数的第一个数
                a = b
                // 把c的值赋给b 循环后b还是相当于前两个数的第二个数
                b = c
            }

            return '第'+n+'个数是'+c
        }
        var result = fibonacciNumber(8)
        console.log(result);

4、要求将不为0的值存入一个新的数组,生成新的数组

 function arr(oldArr) {
            // 定义一个新数组来存储新的数据
            var newArr = []
            // 进行数组遍历
            for (i = 0; i < oldArr.length; i++) {
                // 当值不为0时传入新的数组
                if (oldArr[i] != 0) {
                    // 新数组里面的个数,用length不断累加
                    newArr[newArr.length] = oldArr[i]
                    // newArr.push(newArr[i])
                }
            }
            return newArr
        }


        var result = arr([5, 6, 89, 0, 11, 0, 12, 3, 0])
        console.log(result);

5、翻转数组

  function overturnArr(oldArr){
            var newArr = []
            // 让数组反过来遍历
            for(i=oldArr.length-1;i>=0;i--){
                newArr[newArr.length] = oldArr[i]
            }
            return newArr
        }

        var result=overturnArr([4, 5, 7, 9,11,23])
        console.log(result);

6、冒泡排序

  function bubbleSort(arr) {
            var length = arr.length
            // 外面是循环比较的轮数 如果数组有5个元素 则只需要比较4轮 i就是从0到3
            for (var i = 0; i < length - 1; i++) {
                // 里面是每次循环比较的次数 如果数组有5个元素 第一次比较4次 第二次比较3次 以此类推
                for (var j = 0; j < length - 1 - i; j++) {
                    // 判断:如果前面的数大于后面的数 则交换两数的位置
                    if (arr[j] > arr[j + 1]) {
                        var temp = []
                        temp = arr[j]
                        arr[j] = arr[j + 1]
                        arr[j + 1] = temp
                    }
                }
            }
            console.log(arr);

        }

        var arr = bubbleSort([10, 123, 35, 46, 757, 43, 657, 343, 3234, 45, 4])
        console.log(arr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值