1. 程式人生 > >JS for迴圈及拆分

JS for迴圈及拆分

       首先,是簡單的陣列的知識,例如,建立一個數組,向陣列中新增一個數據,訪問陣列的資料並賦值等等,還要注意字串的拼接等。

       例如,向雜湊表中新增一組資料,並顯示新增的資料:

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

 這樣細小的拆分,可以將原始碼中的功能拆分成一個個的函式。邏輯清晰,便於糾錯。