07、6个题目


1、通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后在页面上输出该数组的左下半三角
            最终结果如下:
            1 
            6 7 
            11 12 13 
            16 17 18 19 
            21 22 23 24 25 
        

<script>

        // 方法一
        var Arr = [];//外层
        var count = 0;
        // 1、建立五个一维数组
        for (var i = 0; i < 5; i++) {
            var arr = [];//内层
            for (var j = 0; j < 5; j++) {
                // 内层循环执行 25次
                count++;// 1-25
                arr.push(count);
            }
            // 把一维数组放入Arr外层数组中
            // 内层循环每完成一组,代表一个一维数组赋值完毕
            // 把一维数组的值追加到外层Arr数组内,循环五次
            Arr.push(arr);
        }
        // 打印二维数组
        console.log(Arr);

        // 2、输出左下角内容
        for (var i = 0; i < 5; i++) {
            // 2.1 先取出一维数组
            var arr = Arr[i];
            // console.log(arr);
            // 2.2 取出一维数组中的每一项
            for (var j = 0; j <= i; j++) {
                document.write(arr[j] + '&nbsp;&nbsp;');
            }
            document.write('</br>');
        }

        // 方法二
        var container_arr = [];
        for (var i = 0, count = 0; i < 5; i++) {
            var arr = [];
            for (var k = 0; k < 5; k++) {
                // 建立基本结构
                count++;
                arr.push(count);
                // 输出内容
                if (k <= i) {
                    document.write(count + "  ");
                }
            }
            container_arr.push(arr);
            document.write("</br>")
        }
        console.log(container_arr);

        document.write('-------------------')
        document.write("</br>")




        // 方法三
        var data = [];
        var tmp = []; // 临时数组保存元素
        for (var i = 1; i <= 25; i++) {
            tmp.push(i);
            if (i % 5 == 0) {
                // 每5个数
                data.push(tmp);
                // 清空tmp下的元素
                tmp = [];
            }
        }
        console.log(data)
        // 输出三角形
        for(var i = 0; i < data.length; i++){
            for(var j = 0; j <= i; j++){
                document.write(data[i][j] + "  ");
            }
            document.write("</br>")
        }

    </script>

 

2、编写函数map(arr) 把数组中的每一位数字都增加30%

    <script>
        var arr = [1,2,3,4,5,6,7,8,9,100];
        var res = []
        function map(arr){
            for(var i = 0; i < arr.length; i++){
                arr[i] += arr[i] * 0.3;
            }
        }
       map(arr);
       console.log(arr);//[1.3, 2.6, 3.9, 5.2, 6.5, 7.8, 9.1, 10.4, 11.7, 130]
    </script>

3、以下是某班级一次考试的成绩表。请计算每个学生总成绩,并按总成绩排名。统计各单科成绩第一名,输出其成绩与学号
            学号    语文    数学    英语    总成绩    备注
            1       105     62      118        
            2       89      78        120        
            3       86      64        80        
            4       78      99        91        
            5       107.5   97        70        
            6       112     61        92        
            7       101     79        104        
            8       71      72        105        
            9       56      68        61        
            10      98      83        77    

 <script>
        // 方法一
        var obj = [
            { id: 1, a: 105, b: 62, c: 118 },
            { id: 2, a: 89, b: 78, c: 120 },
            { id: 3, a: 86, b: 64, c: 80 },
            { id: 4, a: 78, b: 99, c: 91 },
            { id: 5, a: 107.5, b: 97, c: 70 },
            { id: 6, a: 112, b: 61, c: 92 },
            { id: 7, a: 101, b: 79, c: 104 },
            { id: 8, a: 71, b: 72, c: 105 },
            { id: 9, a: 56, b: 68, c: 61 },
            { id: 10, a: 98, b: 83, c: 77 },
        ]
        // 总成绩的和
        var sum = 0;
        // 总成绩数组
        var arr = [];
        // 语文单科成绩
        var aSum = [];
        for (var i = 0; i < obj.length; i++) {
            // 求出每位同学的总成绩
            sum = obj[i].a + obj[i].b + obj[i].c;
            // 排序输出总成绩排名
            arr.push(sum)
            // 对成绩进行排序
            arr.sort(function(a,b){
                return b-a
            });
            // console.log('第', i+1 ,'个同学的总成绩:',sum);

            // 语文单科成绩
            aSum.push(obj[i].a);
            aSum.sort(function (a, b) {
                return b - a;
            });
        }
        console.log('总成绩排名:' + arr);

        var OneNumber = aSum[aSum.length - 1];
        for (var i = 0; i < obj.length; i++) {
            if (OneNumber == obj[i].a) {
                var xuehao = i + 1;
                // console.log(i+1);
                break;
            }
        }
        console.log('语文排名:' + aSum, '语文单科第一名:' + OneNumber, '学号:' + xuehao);


        console.log('-----------------------------------------------')

        // 方法二
        var students = [
            { id: 1, a: 105, b: 62, c: 118 },
            { id: 2, a: 89, b: 78, c: 120 },
            { id: 3, a: 86, b: 64, c: 80 },
            { id: 4, a: 78, b: 99, c: 91 },
            { id: 5, a: 107.5, b: 97, c: 70 },
            { id: 6, a: 112, b: 61, c: 92 },
            { id: 7, a: 101, b: 79, c: 104 },
            { id: 8, a: 71, b: 72, c: 105 },
            { id: 9, a: 56, b: 68, c: 61 },
            { id: 10, a: 98, b: 83, c: 77 },
        ];
        // 1、总成绩
        for (var i = 0; i < students.length; i++) {
            //对象里面写变量会直接自动创建 total
            students[i].total = students[i].a + students[i].b + students[i].c;
        }
        console.log(students)

        // 2、按照总成绩来排序
        for (var j = 0; j < students.length; j++) {
            for (var i = 0; i < students.length - 1 ; i++) {
                if (students[i].total < students[i + 1].total) {
                    var tmp = students[i];
                    students[i] = students[i + 1];
                    students[i + 1] = tmp;
                }
            }
        }
        
        // students.sort(function(a,b){
        //     return b.total - a.total ;
        // })
        console.log(students)

        // 3、统计各单科成绩第一名
        var aTop = bTop = cTop = students[0];
        for(var i = 1; i < students.length; i++){
            if(students[i].a > aTop.a){
                aTop = students[i];
            }
            if(students[i].b > bTop.b){
                bTop = students[i];
            }
            if(students[i].c > cTop.c){
                cTop = students[i];
            }
        }
        console.log(aTop,bTop,cTop);



    </script>

运行效果:

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

<script type="text/javascript">
        // 方法一 数组遍历
        var arr = [1, 2, 3, 3, 3, 4, 5, 3, 6, 7, 3, 2];
        function norepeat(arr) {
            for (var i = 0; i < arr.length; i++) {
                for (var j = i + 1; j < arr.length; j++) {
                    if (arr[i] == arr[j]) {
                        arr.splice(j, 1); // 两两比较,如果前后的值相同,则删除后面的数
                        j--;
                    }
                }
            }
            return arr;
        }
        var res = norepeat(arr);
        console.log(res);


        // 方法二 排序
        var arr = [1, 2, 3, 3, 3, 4, 5, 3, 6, 7, 3, 2];
        function noRepeat() {
            var Arr = arr.sort();
            for (var i = 0; i < arr.length; i++) {
                if (Arr[i] == Arr[i + 1]) {
                    Arr.splice(i, 1); // 等同于 Arr.splice(i+1,1);
                    i--;
                }
            }
            return Arr;
        }
        console.log(noRepeat(arr));

        // 方法三
        var arr = [1, 2, 3, 3, 3, 4, 5, 3, 6, 7, 3, 2];
        function NoRepeat() {
            var result = [];
            // 使用arr数组中每一个元素比较在在result中是否出现,如果没有出现说明这个元素现在还没有重复,加入到result
            for (var i = 0; i < arr.length; i++) {
                if(indexOf(result,arr[i]) == -1){
                    result.push(arr[i]);
                }
            }
            return result;
        }
        // 单独封装的indexOf方法,验证数组当中是否存在指定的元素
        // 找到返回下标,没有找到返回-1
        function indexOf(arr, value) {
            for (var i = 0; i < arr.length; i++) {
                if(arr[i] == value){
                    return i;
                }
            }
            return -1;
        }

        console.log(NoRepeat(arr));

        console.log('------------------')


        // 方法四 ES6 新增的set集合
        console.log(new Set(arr));


    </script>

5、数组扁平化
        var arr = [
            [1, 2, 2],
            [3, 4, 5, 5],
            [6, 7, 8, 9,
                [11, 12, [12, 13, [14]]]], 10
        ];
        // 转为一维数组 [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]
        // 提示:需要使用 instanceof判断是否为数组 并且使用递归

 <script>
        // var arr = [12,3]
        // console.log(typeof arr);//object
        // console.log(arr instanceof Array); //true

        // instanceof关键字是用于判断指定对象是否为指定的构造函数创造
        // 语法:检查的变量 instanceof 构造函数名称(函数名称)

        // 方法一 函数递归
        function formartArray(arr) {
            // 创建空数组存储元素
            var res = [];
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] instanceof Array) {
                    // 当前遍历的还是数组
                    // res.concat将参数中的元素与res数组进行合并
                    res = res.concat(formartArray(arr[i]))
                }else{
                    // 当前遍历的元素不是数组,将元素加入空数组
                    res.push(arr[i])
                }
            }
            return res;
        }
        console.log(formartArray(arr));

        var result = [];
        function FormartArray(arr) {        
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] instanceof Array) {
                    // 当前遍历的还是数组
                    // res.concat将参数中的元素与res数组进行合并
                    FormartArray(arr[i])
                }else{
                    // 当前遍历的元素不是数组,将元素加入空数组
                    result.push(arr[i])
                }
            }
            return result;
        }
        console.log(FormartArray(arr));

6、编写函数has(arr , 60) 判断数组中是否存在60这个元素,返回布尔类型 

    <script>
        var arr = [10,20,30,40,50,60,70,80,90];
        function has(arr,num){
            for(var i = 0; i < arr.length; i++){
                if(arr[i] == num){
                    return true
                }else{
                    return false;
                }  
            }
        }
        var res = has(arr,60)
        console.log(res);
    </script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值