摘要:按照這個(gè)說(shuō)法,在還是行不通的,應(yīng)該得到,得到?jīng)]問(wèn)題,有些摸不到邊了,所以自定義一下這個(gè)方法以便備用總結(jié)日益強(qiáng)大,各種語(yǔ)言逐步向它靠近。開(kāi)發(fā)中一般時(shí)間很緊迫,好多東西都沒(méi)工夫想,所以還有很多要優(yōu)化的地方,有時(shí)候,放慢腳步,可能也是一種進(jìn)步吧
Jquery再熟悉不過(guò),其中的$.ajax封裝也不陌生,其中
$.ajax({ url:url, type:"GET", data:data, success:function(res){ }, error:function(err){ } });
以前比較喜歡success固定回調(diào)這種寫(xiě)法,很清晰
接下來(lái)實(shí)現(xiàn)success和error這種語(yǔ)法
var $={ ajax(call){ if(call.bol){ call.success("成功的回調(diào)"); }else{ console.error("bol is undefined");//提示 } } }
調(diào)用:
$.ajax({ bol:false,//切換bol存在即可調(diào)用成功回調(diào) success:function(res){ console.log(res); }, error:function(err){ console.log(err); } });
類(lèi)似物流信息,后臺(tái)返回一個(gè)字符串,前端識(shí)別出連續(xù)的11位數(shù)字,并且可撥打電話
做這里的時(shí)候,想要跟后臺(tái)多要一個(gè)字段為電話,前端再a標(biāo)簽直接包起來(lái)。但是后臺(tái)接的也是三方,三方返回就是一個(gè)整串......
后來(lái)仔細(xì)想想這個(gè)流程,即使后臺(tái)多給一個(gè)字段,這需求一樣做不完美
比如這個(gè)串是這樣的:
"您的快遞正在配送,配送員電話:17600699305,某某快遞持續(xù)為您服務(wù)"
后臺(tái)分了倆字段
"str1=您的快遞正在配送,配送員電話:,某某快遞持續(xù)為您服務(wù)" str2="17600699305"
這個(gè)str2插到str1的哪里呢?顯然也不好弄。
那還不如不麻煩后臺(tái),前端自己消化。
"識(shí)別連續(xù)的11位數(shù)字",第一想到的就是正則:
var str="您的快遞正在配送,配送員電話:17600699305,某某快遞持續(xù)為您服務(wù)",strCon=str.match(/d{11}/);
match符合條件會(huì)返回一個(gè)數(shù)組,包含 匹配到的內(nèi)容,內(nèi)容的開(kāi)始下標(biāo),整個(gè)內(nèi)容,還有個(gè)groups(求釋義)
接下來(lái)封裝實(shí)現(xiàn):
function continuFunc(str){ var strBol=str.match(/d{11}/); if(strBol){ return strBol.input.slice(0,strBol.index)+""+strBol[0]+""+strBol.input.slice(strBol.index+strBol[0].length,str.length); } }
就是分成三個(gè)部分返回,以匹配到的11位連續(xù)數(shù)字為節(jié)點(diǎn),前后各為兩部分,再進(jìn)行拼接。
index就是匹配區(qū)的開(kāi)始下標(biāo),所以第一部分從0取到下標(biāo),第二部分已經(jīng)返回,第三部分取index+字符長(zhǎng)度(11)——結(jié)尾
toFixed()方法如何實(shí)現(xiàn)(保留n位小數(shù))
剛開(kāi)始看到是不是很慌,這方法調(diào)用的時(shí)候都是Number.toFixed(),而常規(guī)的函數(shù)封裝都是
function Func(argu){ return argu; }
調(diào)用都是Func("調(diào)用");,很慌。
這種函數(shù)基本都是綁定在原型上的,不難發(fā)現(xiàn),調(diào)用toFixed方法的都是Number類(lèi)型,所以toFixed方法應(yīng)該就是綁定在Number的prototype了,接下來(lái)分析內(nèi)部實(shí)現(xiàn)問(wèn)題
Number.prototype.toDiyFixed=function(n){ return (Math.round(this * Math.pow( 10, n ))/ Math.pow( 10, n)).toString(); }
調(diào)用:var num=100.123, a.toDiyFixed(2)得到100.12。
toDiyFixed方法就成功的copy了toFixed方法。
就a=100.123這個(gè)例子講實(shí)現(xiàn)原理:把原數(shù) num先乘以100(n是多少就乘以10的幾次方),再進(jìn)行四舍五入,(去除小數(shù)兩位之后的小數(shù),因?yàn)槌艘?00以后,前兩位小數(shù)已經(jīng)變?yōu)檎麛?shù)部分,四舍五入操作就不會(huì)影響了),至此完成保留2(n)位小數(shù)的操作。
注意:但是,這個(gè)方法有個(gè)問(wèn)題,就是不會(huì)自動(dòng)向末尾補(bǔ)0,比如說(shuō)100.196保留兩位小數(shù)應(yīng)該得到100.20,但是該方法只能拿到100.2,100.201應(yīng)該得到100.20,但該方法得到100.2,目前還沒(méi)想到解決辦法,歡迎一起交流探討,但是基礎(chǔ)功能可以實(shí)現(xiàn).
另外說(shuō)個(gè)原生toFixed的bug:
0.7.toFixed(0)發(fā)現(xiàn)得到的是1(IE)
0.035和0.045保留兩位小數(shù)后得到的都是0.04(Chrom),當(dāng)然如果覺(jué)得這點(diǎn)誤差無(wú)所謂,10.35、10.45保留兩位小數(shù)得到10.3、10.4發(fā)現(xiàn)都是錯(cuò)的,這是不容小覷的數(shù)字了吧,后來(lái)查閱資料說(shuō),js的toFixed方法用的是”銀行家算法“,實(shí)質(zhì)就是 ”四舍六入無(wú)成雙“,那啥意思呢,當(dāng)舍去位的數(shù)值小于5時(shí),直接舍去該位;當(dāng)舍去位的數(shù)值大于等于6時(shí),在舍去該位的同時(shí)向前位進(jìn)一;當(dāng)舍去位的數(shù)值等于5時(shí),如果前位數(shù)值為奇,則在舍去該位的同時(shí)向前位進(jìn)一,如果前位數(shù)值為偶,則直接舍去該位。
按照這個(gè)說(shuō)法,在Chrom還是行不通的,10.35應(yīng)該得到10.4,10.45得到10.4沒(méi)問(wèn)題,有些摸不到邊了,所以自定義一下toDiyFixed這個(gè)方法以便備用
javaScript日益強(qiáng)大,各種語(yǔ)言逐步向它靠近。(??) 開(kāi)發(fā)中一般時(shí)間很緊迫,好多東西都沒(méi)工夫想,所以還有很多要優(yōu)化的地方,有時(shí)候,放慢腳步,可能也是一種進(jìn)步吧!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/96161.html
摘要:還以為我是一個(gè)失業(yè)青年,后來(lái)想想,后已經(jīng)是中年了。對(duì)于各路框架,還是根據(jù)業(yè)務(wù)需求去學(xué)習(xí)比較好,相信自己的學(xué)習(xí)能力。我還是先鞏固一下數(shù)據(jù)結(jié)構(gòu)和算法吧。數(shù)據(jù)結(jié)構(gòu)與算法的描述針對(duì)自己目前所處的環(huán)境,就用來(lái)描述常用的數(shù)據(jù)結(jié)構(gòu)跟常用的算法。 失業(yè)中年 前段時(shí)間,帶我出道的CTO要帶我去創(chuàng)業(yè),然后,之前談好的技術(shù)方案在我過(guò)去之后都沒(méi)能開(kāi)始,怪可惜的,甚至,他自己都背鍋離職了。再后來(lái),股東突然撤資了...
摘要:對(duì)于第一種方式,回顯時(shí)只需要將從后臺(tái)獲取的數(shù)據(jù)拼接在一起就行,對(duì)于第二種方式,需要去進(jìn)行循環(huán)對(duì)比,找出對(duì)應(yīng)的索引值然后進(jìn)行賦值,具體代碼在這里。 距離上篇文章已經(jīng)快九個(gè)月了,我是不是墮落了。。這篇文章主要是記錄我在項(xiàng)目中遇到的一個(gè)小問(wèn)題,其實(shí)說(shuō)小也不小,在去年剛接觸vue的時(shí)候,對(duì)于select如何綁定多個(gè)值這個(gè)問(wèn)題一度讓我不知所措。剛開(kāi)始完全沒(méi)接觸過(guò)vue和elementUI直接上手...
摘要:協(xié)程的判斷條件下面我們來(lái)著重看下的源碼,因?yàn)閺倪@里開(kāi)始就涉及到協(xié)程的判斷。第二點(diǎn)是關(guān)鍵點(diǎn),用來(lái)判斷該方法的調(diào)用是否使用到了協(xié)程。原理我們先來(lái)看下使用協(xié)程是怎么寫(xiě)的這是一個(gè)標(biāo)準(zhǔn)的協(xié)程寫(xiě)法,然后我們?cè)偬子蒙厦娴臈l件,發(fā)現(xiàn)完全匹配不到。 第一眼看,跟我之前印象中的有點(diǎn)區(qū)別(也不知道是什么版本),return的時(shí)候居然...
閱讀 2566·2021-09-02 15:40
閱讀 1572·2019-08-30 15:54
閱讀 1086·2019-08-30 12:48
閱讀 3406·2019-08-29 17:23
閱讀 1053·2019-08-28 18:04
閱讀 3670·2019-08-26 13:54
閱讀 611·2019-08-26 11:40
閱讀 2401·2019-08-26 10:15