RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [javascript] [問題]跳出迴圈   字型大小:||| 
335012
銀驢友〔初級〕
等級: 12等級: 12等級: 12
英雄檸檬

今日心情

 . 積分: 391
 . 文章: 1008
 . 收花: 3299 支
 . 送花: 20293 支
 . 比例: 6.15
 . 在線: 2097 小時
 . 瀏覽: 16930 頁
 . 註冊: 7446
 . 失蹤: 601
 . 台南市仁德區
#1 : 2016-8-1 01:14 AM     只看本作者 引言回覆

各位驢友,大家好
有些問題想請教一下眾驢友。
小弟目前以JavaScript寫了一小段程式碼
用來對發票號碼,供自己爽...

var myArray = ["12345678", "87654321", "78965432"]; //儲存發票號碼

var checkArray = function ( num ) {
    var len = myArray.length,
        i = 0,
        result = [],
        bl = "Bad Luck",  //沒中獎..
        last3;  //檢查末三碼
    for ( ; i<len; i+=1 ) {
        last3 = myArray[i].slice(5, 8);
        if( last3 === num ) {
            result.push( myArray[i] + ":" + i );
        }
        if( typeof num !== 'string' ) { //以字串處理,怕有0開頭之數字
            return "請加引號";
        }
        if( last3 !== num ) {
            result.push(bl);
        }
     }

     return result;
};
https://jsfiddle.net/cyz9Lyfv/3/

我的問題是當參數num在陣列裡的元素找不到相同的末三碼時
該如何跳出迴圈,只傳回一次變數bl就好
因為假設有一百張發票都沒中(很正常)在主控台就還好
在網頁裡使用alert或是document.writln就很煩了.....
我有嘗試過break,程式運行就會卡彈....
不知小弟描述的是否清楚

不知眾驢友,有何想法
懇請多多指教,用力鞭打



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
leacks
銀驢友〔高級〕
等級: 14等級: 14等級: 14等級: 14


十週年紀念徽章(六級)  

今日心情

 . 積分: 854
 . 文章: 3455
 . 收花: 6791 支
 . 送花: 4256 支
 . 比例: 0.63
 . 在線: 4840 小時
 . 瀏覽: 30360 頁
 . 註冊: 7095
 . 失蹤: 1106
#2 : 2016-8-1 06:29 PM     只看本作者 引言回覆

我沒有學js
不過一般不是 if( last3 == num ) {嗎? 為啥你有3個等於??
我找了
http://www.w3school.com.cn/tiy/t.asp?f=js_ifthen
try一下是兩個阿


你的程式思維有問題
應該多一個變數或你愛用bl也可以

if( last3 == num ) {
            bl='中獎'
            result.push( myArray + ":" + i );
        }

for外面
if( bl!='中獎' ) {
           result.push('沒中');
        }



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
335012
銀驢友〔初級〕
等級: 12等級: 12等級: 12
英雄檸檬

今日心情

 . 積分: 391
 . 文章: 1008
 . 收花: 3299 支
 . 送花: 20293 支
 . 比例: 6.15
 . 在線: 2097 小時
 . 瀏覽: 16930 頁
 . 註冊: 7446
 . 失蹤: 601
 . 台南市仁德區
#3 : 2016-8-1 11:27 PM     只看本作者 引言回覆

節錄自: JavaScript 設計模式 P.22

引用:
避免隱含的型別轉換
JavaScript在比較變數時會隱含的做型別轉換。這就是為什麼 false == 0 或 " " == 0
會回傳 true 的原因。

為了避免隱含的型別轉換造成困惑,應總是用 === 和 !== 運算子來比較,可以同時比較
運算式結果的型別跟值:

var zero = 0;
if (zero === false) {
    //不會執行,因為 zero 是 0,不是 false
}

if (zero == false) {
    //這個區塊會執行...
}
另一個思想流派認為如果 == 能滿足需求,使用 === 則顯得累贅。例如當你使用 typeof
你知道會回傳一個字串,所以沒有理由去使用嚴格比對。儘管如此,JSLint要求使用嚴格比較
;這樣確實讓程式碼更一致,並在閱讀程式碼的時候可以少花一點精神。


所以小弟認為,見仁見智..
另外,要把 if 敘述提到 for 外面的話..
是否就不需使用 if 敘述了?
直接 return "沒中"; 或是 alert("沒中"); 會比較好?

謝謝提出想法。



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
leacks
銀驢友〔高級〕
等級: 14等級: 14等級: 14等級: 14


十週年紀念徽章(六級)  

今日心情

 . 積分: 854
 . 文章: 3455
 . 收花: 6791 支
 . 送花: 4256 支
 . 比例: 0.63
 . 在線: 4840 小時
 . 瀏覽: 30360 頁
 . 註冊: 7095
 . 失蹤: 1106
#4 : 2016-8-16 07:57 PM     只看本作者 引言回覆


引用:
335012寫到:
節錄自: JavaScript 設計模式 P.22

引用:
避免隱含的型別轉換
JavaScript在比較變數時會隱含的做型別轉換。這就是為什麼 false == 0 或 " " == 0
會回傳 true 的原因。

為了避免隱含的型別轉換造成困惑,應總是用 === 和 !== 運算子來比較,可以同時比較
運算式結果的型別跟值:

var zero = 0;
if (zero === false) {
    //不會執行,因為 zero 是 0,不是 false
}

if (zero == false) {
    //這個區塊會執行...
}
另一個思想流派認為如果 == 能滿足需求,使用 === 則顯得累贅。例如當你使用 typeof
你知道會回傳一個字串,所以沒有理由去使用嚴格比對。儘管如此,JSLint要求使用嚴格比較
;這樣確實讓程式碼更一致,並在閱讀程式碼的時候可以少花一點精神。


所以小弟認為,見仁見智..
另外,要把 if 敘述提到 for 外面的話..
是否就不需使用 if 敘述了?
直接 return "沒中"; 或是 alert("沒中"); 會比較好?

謝謝提出想法。



感謝解說
因為我之前寫c之類,甚至印象連php都沒有三個等於
尤其是c,不同型別,除非是null之類,不然根本不讓你比



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Ailio
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
鸚鵡螺號 艦長

十週年紀念徽章(五級)  

今日心情

 . 積分: 2664
 . 文章: 6462
 . 收花: 22900 支
 . 送花: 4903 支
 . 比例: 0.21
 . 在線: 2827 小時
 . 瀏覽: 85748 頁
 . 註冊: 7461
 . 失蹤: 3
 . 莫名奇妙的商人星球
#5 : 2016-8-17 01:24 PM     只看本作者 引言回覆

php有 === 喔

因為php隱含轉型 null 0 false 用 == 判斷會視為一樣

如果遇到某些要判斷回傳值 是 0 但不是 null 時 就必須使用 ===



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-12-4 12:46 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.023648 second(s), 6 queries , Qzip disabled