JS for迴圈及拆分
阿新 • • 發佈:2019-01-26
首先,是簡單的陣列的知識,例如,建立一個數組,向陣列中新增一個數據,訪問陣列的資料並賦值等等,還要注意字串的拼接等。
例如,向雜湊表中新增一組資料,並顯示新增的資料:
var stu_score = {'楊璐':131, '王雪':131, '韓林霖':127, '沙龍逸':123, '李鑑學':126, '韓雨萌':129, '劉帥':116, '康惠雯':114, '劉鈺婷':115}; //查詢'王雪'的資料 var score = stu_score['王雪']; //列印新增的資料 console.log('王雪的成績為:'+score);
然後是簡單的 if語句
var score = 133; if(score > 130){console.log('成績優異');} else if( score > 120){console.log('成績良好');} else if( score > 60){console.log('成績及格');} else {console.log('成績不及格');}
接下來是for迴圈,for迴圈一般都會巢狀 if 語句,或者for迴圈巢狀,一般用來遍歷某個東西。
我認為,for 迴圈中最要的是不要陷入死迴圈。思路和邏輯要清晰。一般情況下,我們都會利用for迴圈遍歷某個陣列,再用if語句來規範其條件,完成for迴圈功能,但是在迴圈中,我們有時會巢狀更多的迴圈或者if語句,稍有疏忽,就會陷入到死迴圈中,導致程式崩潰,完成不了其功能。
首先,就我本身的能力,要解決這種情況
1,首先要明確邏輯,簡化思路,儘量減少複雜的巢狀。
2,簡化程式碼,能遍歷一遍完成功能的,儘量不要遍歷第二遍。
3,拆分函式,將其邏輯拆分成若干個功能塊,用到某個功能的時候再呼叫相對應的函式。
下面是一個簡單的pos機的問題中的一段程式碼(水平很菜,將就看看吧.......): for(var i = 0; i < inputs.length; i ++) { for(var j = 0; j < new_inputs.length; j ++) { if(inputs[i].barcode == new_inputs[j].barcode) { new_inputs[j].count ++;//比較barcode,若相等,count+1 } else if(inputs[i].barcode != new_inputs[j].barcode && j === new_inputs.length - 1) { new_inputs.push(inputs[i]); new_inputs[new_inputs.length - 1].count = 1; break;//比較barcode,若不等,將其新增到new_inputs中,令其count = 1 } } } 我們可以將其拆分成這樣: function add_item_to_new_inputs(inputs,new_inputs) { for(var i = 1;i < inputs.length; i ++) { comepare_barcode_to_push_new_inputs(new_inputs,inputs,i);//呼叫比較barcode的函式 } } function comepare_barcode_to_push_new_inputs(new_inputs,inputs,i) { for(var j = 0; j < new_inputs.length; j ++) { comepare_barcode(inputs,new_inputs,i,j);//呼叫比較barcode相等時的函式 if(inputs[i].barcode != new_inputs[j].barcode && j === new_inputs.length - 1) { new_inputs.push(inputs[i]); new_inputs[new_inputs.length - 1].count = 1; break; } } }//在這個function中完成的功能是通過比較barcode的值來明確new_inputs中count的值 function comepare_barcode(inputs,new_inputs,i,j) { if(inputs[i].barcode == new_inputs[j].barcode) { new_inputs[j].count ++; } }//在這個function中完成的功能是比較barcode,若相等,count+1
這樣細小的拆分,可以將原始碼中的功能拆分成一個個的函式。邏輯清晰,便於糾錯。