Js 关于数组的练习

1.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出

代码:

        // 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;
        //然后按顺序每五个数求出一个平均值,放在另一个数组中并输出

        /* 
        *
         @ 创建等步长数组
         @ params {Number} num 所需要数组的长度 
         @ params {Number} ini 所需要数组的第一个值
         @ params {Number} ste 所需要数组的步长
         @ return (Array) 返回生成的数组 
        *
        */
        function createArr(num,ini,ste){
            var arr = [ini]             //创建数组并将初始值给第一位
            for(var i = 1;i<num;i++){   
                arr.push(arr[i-1]+ste)  //将值放入新数组
            }
            return arr
        }

        /* 
        *
         @ 计算数组给定步长的平均值,并放入新数组中返回
         @ params {Array} arr 需要计算算的数组
         @ params {ste} ste 计算步长
         @ return 将计算结果放入新数组返回
        *
        */
        function computeArr(arr,ste){
            var res = new Array() //创建一个新数组去接收结果
            var temp = 0          //设置一个临时变量去接收和
            for(var i = 0;i<arr.length;i++){
                temp+=arr[i]      //进行累加方便计算平均值
                if((i+1)%ste==0){ //如果加到给定步长的项数则进行计算
                    res.push(temp/ste) //将计算结果放入新数组中
                    temp = 0    //将临时变量置零
                }
            }
            return res
        }
        var arr = createArr(30,2,2)
        var res = computeArr(arr,5)

        console.log('arr :>> ', arr);
        console.log('res :>> ', res);

结果:

2.通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角

代码:

 

        //通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角

        /* 
        *
         @ 创建给定数字的二阶方阵二维数组
         @ params {Number} num 二维数组的长度
         @ return 返回创建好的二维数组
        *
        */
        function creatArr(num){
            var res = new Array()   //创建返回结果的数组
            var temp = new Array()  //创建一个临时数组接收二维数组中子数组的元素
            for(var i = 1;i<=num*num;i++){
                temp.push(i)        //将项放入子数组中
                if(i%num==0){
                    res.push(temp)  //将子数组放入二维数组中
                    temp = []
                }
            }
            return res
        } 

        /* 
        *
         @ 获取二维数组的左下半三角
         @ params {Array} 二维数组
         @ return 二维数组的左下半三角
        *
        */
        function getResult(arr){
            var res = new Array()  //创建结果数组
            for(i=0;i<arr.length;i++){ //遍历二维数组
                var temp = new Array()
                for(k=0;k<=i;k++){ //遍历子数组的项
                    temp.push(arr[i][k])
                }
                res.push(temp)
            }
            return res
        }

        var arr = creatArr(5)
        var res = getResult(arr)

        console.log('arr :>> ', arr);
        console.log('res :>> ', res);

结果:

 3.编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组

代码:

        //编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组

        /* 
        *
         @ 数组去重
         @ params {Array} arr 需要去重的数组
         @ return 去重后的数组
        *
        */

        //双层for循环去重
        function norepeat1(arr){
            var res = arr
            for (i in res) {
                for (k = i-0 + 1; k < res.length; k++) {
                    if(res[k] == res[i]){  // 判断有没有相同的 相同就要删除掉 
                        res.splice(k, 1)
                        k--      //只有要删除的操作 避免数组塌陷忽略的项 进行-- 继续比较
                    }
                }
            }
            return res
        }

        //先排序再用一层for循环去重
        function norepeat2(arr){
            var res = arr
            res.sort(function(a,b){ return a - b })
            for (k =0; k < res.length-1; k++) {
                if(res[k] == res[k+1]){  // 判断当前的和紧跟着的后面的项比较 相等就该删除 
                    res.splice(k+1, 1)
                    k--    //只有要删除的操作 避免数组塌陷忽略的项 进行-- 继续比较
                }
            }
            return res
        }

        //利用对象键值唯一去重
        function norepeat3(arr){
            var res = new Array()
            var obj = new Object()
            for(var i in arr){
                obj[arr[i]]=arr[i]   // 把数组的每一项 当做对象的key值
            }
            for(var k in obj){
                res.push(obj[k])
            }
            return res
        }

        //新数组挑选去重
        function norepeat4(arr){
            var res = new Array()
            for(i=0;i<arr.length;i++){  
                //判断数组里面有没有这个成员
                // 有这个成员 不添加
                // 没有这个成员 才添加
                res.indexOf(arr[i])==-1 && res.push(arr[i])
            }
            return res
        }

        var a = [1,2,2,3,4,5,1,4,2,1,3,5,1,2,3,4]
        console.log('a :>> ', a);
        console.log('norepeat1',norepeat1(a))
        console.log('norepeat2',norepeat2(a))
        console.log('norepeat3',norepeat3(a))
        console.log('norepeat4',norepeat4(a))

运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值