输出不出来,,想问一下问题出在哪

来源:3-8 编程练习

qq_易驰_0

2017-06-06 18:00

var arr=['*','##',"***","&&","****","##*"];

 arr[7]="**";

 //显示数组长度

for(var i=0;i<arr.length;i++){

    var newarr = arr[i].split('');

    for(var j=0;j<arr[i].length;j++){

        if(newarr[j] != '*'){

            arr[i]=null;

            break;

        }

    }

}

function swap(a,b){

    var temp;

    temp=a;

    a=b;

    b=temp;

}

for(var k=0;k<arr.length;k++){

    for(var l=k; l<arr.length; l++){

        if(arr[k].length!=0 && arr[k].length>arr[l].length && arr[l].length!=0 ){

            swap(arr[k],arr[l]);

        }

    }

}

for(var m=0;m<arr.length;m++){

    if(arr[m].length != 0){

        document.write(arr[m] + '<br />')

    }

}

 //将数组内容输出,完成达到的效果。


写回答 关注

5回答

  • 慕勒7123956
    2017-06-08 10:36:09
    已采纳

    问题在于arr并不是全部有值得,arr[6]是undefined,for循环到arr[6]的时候就会报错,因为undefined没有split这个方法

    qq_易驰_...

    那请问一下,undefined有.length这个方法吗,undefined.length返回值是什么

    2017-06-08 12:13:01

    共 2 条回复 >

  • qq_易驰_0
    2017-06-08 13:15:23

    var arr=['*','##',"***","&&","****","##*"];

     arr[7]="**";

     //显示数组长度

    for(var i=0;i<arr.length;i++){

        if(!arr[i]){ arr[i]='0' };                      //    如果arr[i]为空(undefined),就给它补个'0'

        var newarr = arr[i].split('');

        for(var j=0;j<arr[i].length;j++){        //判断如果arr[i]中含有‘*'以外的符号,则将它赋为‘0’

            if(newarr[j] != '*'){

                arr[i]='0';

                break;

            }

        }

    }

    function st(a,b){                              

        return a.length-b.length;

    }

    arr.sort(st);                                          //排序

    for(var m=0;m<arr.length;m++){            //输出排序好后不是‘0’的所有项

        if(arr[m] != 0){

            document.write(arr[m]+'<br />')

        }

    }


    慕勒7123...

    可以的,很厉害

    2017-06-08 22:12:54

    共 1 条回复 >

  • 慕勒7123956
    2017-06-08 10:45:22
    <!DOCTYPE  HTML>
    <html >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>数组</title>
    <script type="text/javascript">
     //创建数组
     var arr=['*','##',"***","&&","****","##*"];
     arr[7]="**";
     //显示数组长度
     var dataArr=[]
     arr.forEach(function(item,index)
     {
        if(index%2==0)
        {
            dataArr.push(item);//把arr里面的*提取出来,这个方法只会执行到arr[5],
    
        }
     })
     console.log(dataArr);
     dataArr.push(arr[7]);//添加最后一个,这时候就只剩下排序了
     function sortArr(a,b)
     {
        return(a.length-b.length);
    
     }
     dataArr.sort(sortArr);
    
    
    for(var m=0;m<dataArr.length;m++){
        if(dataArr[m].length != 0){
            document.write(dataArr[m] + '<br />')
        }
    }
     //将数组内容输出,完成达到的效果。
    
    
    </script>
    </head>
    <body>
    </body>
    </html>

    你可以看看我之前写的,如果看不懂,也没关系的,继续往后面学,过一段时间再回来看就行

    qq_易驰_...

    这样写的话如果arr数组变了不就不行了吗~~我把自己的改好了,还是很谢谢你

    2017-06-08 13:14:14

    共 1 条回复 >

  • qq_易驰_0
    2017-06-07 09:57:32

    http://img.mukewang.com/59375d740001103713240977.jpg这个题目

  • 听歌
    2017-06-06 18:44:27

    你想要这组代码输出什么?

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题