有沒有人來解釋一下這些代碼?這節實在看不懂啊
? <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>
2016-07-18
?var arr=['*','##','***','&&','****','##*'];
?arr[7]="**";
document.write(arr[0]+"<br/>") //輸出:*
document.write(arr[7]+"<br/>")//輸出:**
document.write(arr[2]+"<br/>")//輸出:***
document.write(arr[4]+"<br/>")//輸出:****
其實這樣的代碼就可以按要求打印結果,不過樓上的各種回答加上了判斷機制,一是判斷有沒有超出數組長度,二是判斷打印的結果是不是*。
2016-07-10
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>"); ?}注釋得應該可以看懂
2016-07-08
樓上正解
2016-07-07
這個代碼其實有一個bug,在刪除數組其中一個元素之后會改變數組的長度,導致for循環出錯
建議在arr.splice(i,1); 與break;中添加一句i--;
讓當前的index減一
假如刪除數組index=3的位置,就再次從3開始下一次判斷
2016-07-06
split 分割字符串返回數組? splice刪除數組制定位置開始指定長度的的的元素
2016-07-06
根本沒有必要這么復雜!我的處理:
document.write(arr[0]+"<br/>") //輸出:*
document.write(arr[7]+"<br/>")//輸出:**
document.write(arr[2]+"<br/>")//輸出:***
document.write(arr[4]+"<br/>")//輸出:****
2016-07-06
我也是懵懵懂懂的,需要自己多看幾遍就理解了