风早君418
2016-07-06 20:46
<script type="text/javascript">
//创建数组
var arr=["*","##","***","&&","****","##*"];
arr[7]="**";
//删除数组中非*的项
for(var i=0;i<arr.length;i++){
if(arr[i]!=undefined){
var myarr=arr[i].split("");
for(var j=0;j<myarr.length;j++){
if(myarr[j]!='*'){
arr.splice(i,1);
break;
}
}
}
}
//按照字符数排序
arr.sort(function(a, b){
if(a.length>b.length)
{
return 1;
}
else if(a.length<b.length)
{
return -1;
}
else
{
return 0;
}
})
//将数组内容输出,完成达到的效果。
for(var i=0;i<arr.length;i++){
if(arr[i] != undefined){
document.write(arr[i]+'<br />')
}
}
</script>
var arr=['*','##','***','&&','****','##*'];
arr[7]="**";
document.write(arr[0]+"<br/>") //输出:*
document.write(arr[7]+"<br/>")//输出:**
document.write(arr[2]+"<br/>")//输出:***
document.write(arr[4]+"<br/>")//输出:****
其实这样的代码就可以按要求打印结果,不过楼上的各种回答加上了判断机制,一是判断有没有超出数组长度,二是判断打印的结果是不是*。
var arr = ['*','##',"***","&&","****","##*"]; arr[7] = "**"; //先除去arr数组中不是*的元素 for(var i=0;i<arr.length;i++){ if(arr[i]!=undefined){//如果arr[i]不是空值(即未赋值),则使用split函数按参数将字符串切分,返回子串数组;如果参数是"",则将字符串切分成单个字母 var myarr=arr[i].split(""); for(var j=0;j<myarr.length;j++){//检测myarr是不是全是* if(myarr[j]!='*'){//如果不是myarr不全是*则删除 arr.splice(i,1); i--;//由于每次删除length的值都会减一,那么则会使每次删除元素的后一个元素得不到检测 break; } } } else arr.splice(i,1); } //按*得数目对arr进行排序,使用sort函数,首先实现比较函数,以便规定排序规则; //比较函数可以独立书写,也可以写在sort的括号中 //比较函数:有两个参数a,b;如果返回值为负数,a排列在b的前面;返回0位置不变;否则排列在b后面 function regular(a,b){ if(a.length<b.length) return -1; if(a.length>b.length) return 1; else return 0; } //上述函数可以改写为下面的简写形式 /*function regular(a,b){ return a.length-b.length; }*/ arr.sort(regular); //循环输出arr for(var j=0;j<arr.length;j++){ document.write(arr[j]+"<br>"); }
注释得应该可以看懂
楼上正解
这个代码其实有一个bug,在删除数组其中一个元素之后会改变数组的长度,导致for循环出错
建议在arr.splice(i,1); 与break;中添加一句i--;
让当前的index减一
假如删除数组index=3的位置,就再次从3开始下一次判断
split 分割字符串返回数组 splice删除数组制定位置开始指定长度的的的元素
根本没有必要这么复杂!我的处理:
document.write(arr[0]+"<br/>") //输出:*
document.write(arr[7]+"<br/>")//输出:**
document.write(arr[2]+"<br/>")//输出:***
document.write(arr[4]+"<br/>")//输出:****
我也是懵懵懂懂的,需要自己多看几遍就理解了
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题