为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

0 回复 有任何疑惑可以回复我~
#1

qq_易驰_0 提问者

知道我的问题出在哪了,谢谢!
2017-06-08 回复 有任何疑惑可以回复我~
#2

qq_易驰_0 提问者

那请问一下,undefined有.length这个方法吗,undefined.length返回值是什么
2017-06-08 回复 有任何疑惑可以回复我~

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 />')

    }

}


0 回复 有任何疑惑可以回复我~
#1

慕勒7123956

可以的,很厉害
2017-06-08 回复 有任何疑惑可以回复我~
<!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>

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

0 回复 有任何疑惑可以回复我~
#1

qq_易驰_0 提问者

这样写的话如果arr数组变了不就不行了吗~~我把自己的改好了,还是很谢谢你
2017-06-08 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//59375d740001103713240977.jpg这个题目

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信