摘要:如果傳入字符串是一個有效的美國電話號碼,則返回。你的任務(wù)就是驗證前面給出的字符串是否是有效的美國電話號碼。是一個二維數(shù)組,存著當前可用的找零。否則返回應(yīng)找回的零錢列表且由大到小存在二維數(shù)組中。如果貨物已存在則更新數(shù)量。
1、Validate US Telephone Numbers
如果傳入字符串是一個有效的美國電話號碼,則返回 true。
下面是一些有效號碼的例子(還有下面測試時用到的一些變體寫法):
555-555-5555
(555)555-5555
(555) 555-5555
555 555 5555
5555555555
1 555 555 5555
在本節(jié)中你會看見如 800-692-7753 or 8oo-six427676;laskdjf這樣的字符串。你的任務(wù)就是驗證前面給出的字符串是否是有效的美國電話號碼。區(qū)號是必須有的。 如果字符串中給出了國家代碼, 你必須驗證其是 1。如果號碼有效就返回 true ; 否則返回 false。
解答:
function telephoneCheck(str) { // Good luck! var reg=/^1? ?(d{3}|(d{3}))[ -]?d{3}[ -]?d{4}$/; var res=reg.test(str); return res; } telephoneCheck("2 (757) 622-7382");2、Symmetric Difference
創(chuàng)建一個函數(shù),接受兩個或多個數(shù)組,返回所給數(shù)組的 對等差分(symmetric difference) (△ or ⊕)數(shù)組。
給出兩個集合 (如集合 A = {1, 2, 3} 和集合 B = {2, 3, 4}), 而數(shù)學術(shù)語 "對等差分" 的集合就是指由所有只在兩個集合其中之一的元素組成的集合(A △ B = C = {1, 4})。 對于傳入的額外集合 (如 D = {2, 3}), 你應(yīng)該安裝前面原則求前兩個集合的結(jié)果與新集合的對等差分集合 (C △ D = {1, 4} △ {2, 3} = {1, 2, 3, 4})。
解答:
function sym(args) { var temp,pos; var a=Array.from(arguments); a=a.reduce(function(prev, curv, index, array){ var a = prev.filter(function(item){ return curv.indexOf(item) < 0; }); var b = curv.filter(function(item){ return prev.indexOf(item) < 0; }); return a.concat(b); }); return a.filter(function(item,index,array){ return array.indexOf(item) == index; }); } sym([1, 2, 3], [5, 2, 1, 4]);3、Exact Change
設(shè)計一個收銀程序 checkCashRegister() ,其把購買價格(price)作為第一個參數(shù) , 付款金額 (cash)作為第二個參數(shù), 和收銀機中零錢 (cid) 作為第三個參數(shù)。
cid 是一個二維數(shù)組,存著當前可用的找零。
當收銀機中的錢不夠找零時返回字符串 "Insufficient Funds"。 如果正好則返回字符串 "Closed"。否則, 返回應(yīng)找回的零錢列表,且由大到小存在二維數(shù)組中。
解答:
function checkCashRegister(price, cash, cid) { var change; var base=100;//金額基數(shù) change=(cash-price)*base; //找零 //定義一個函數(shù),用來求零錢和。 var getTotalMoney=function(arr){ var s=arr.reduce(function (preV, currV, currIndex, array){ return preV+currV[1]; },0); return base*s; }; var remain = getTotalMoney(cid); if(remain < change){//余額不足,沒錢找了 return "Insufficient Funds"; } var baseDollarObj={ "PENNY":1, "NICKEL":5, "DIME":10, "QUARTER":25, "ONE":100, "FIVE":500, "TEN":1000, "TWENTY":2000, "ONE HUNDRED":10000 }; var changeArr=[]; var currLast=0;// 當前面值所剩余額 var currMoney=0;//當前金錢面額 var currtotal=0;//當前零錢可找總額 for (var i=cid.length-1;i>=0;i--){ //當前面值剩余金額 currLast=cid[i][1]*base; if (currLast<=0) { continue;//當前面值的金額剩余0,跳過 } currMoney=baseDollarObj[cid[i][0]]; if(change>currMoney){//如果當前金額面值小于應(yīng)找錢數(shù) if(change4、Inventory Update0){ //找不開的面值 return "Insufficient Funds"; }else if(change===0&&((cash-price)*base==remain)){ //如果零錢數(shù)等于應(yīng)找數(shù)額并且可找出來 return "Closed"; }else{ return changeArr; } } checkCashRegister(19.50, 20.00, [["PENNY", 0.50], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
依照一個存著新進貨物的二維數(shù)組,更新存著現(xiàn)有庫存(在 arr1 中)的二維數(shù)組。 如果貨物已存在則更新數(shù)量 。如果沒有對應(yīng)貨物則把其加入到數(shù)組中,更新最新的數(shù)量。返回當前的庫存數(shù)組,且按貨物名稱的字母順序排列。
解答:
function updateInventory(arr1, arr2) { // All inventory must be accounted for or you"re fired! arr2=arr2.filter(function(v){ var res=true; for(var i=0;i5、No repeats please 把一個字符串中的字符重新排列生成新的字符串,返回新生成的字符串里沒有連續(xù)重復(fù)字符的字符串個數(shù).連續(xù)重復(fù)只以單個字符為準。
例如, aab 應(yīng)該返回 2 因為它總共有6中排列 (aab, aab, aba, aba, baa, baa), 但是只有兩個 (aba and aba)沒有連續(xù)重復(fù)的字符 (在本例中是 a)。
思路:
全排列recoper函數(shù):對于每一個輸入的str,我們把它分為兩部分,第一部分為字符串的第一個字母,定義為left,第二部分為剩余的字符串,定義為rest。返回str的全排列數(shù)組。
遞歸思路:遞歸recoper。解答:
function permAlone(str) { var perarr=[]; //創(chuàng)建正則,如果字符串全重復(fù),則直接return 0 var reg = /(.)1+/g; if (str.match(reg) !== null && str.match(reg)[0] === str) { return 0; } function recoper(str) { var arr = [];//存放str的全排列 if (str.length > 1) { var left = str[0]; var rest = str.slice(1, str.length); //獲取rest字符串的全排列 var perRes = recoper(rest); var pl = perRes.length, pil, s; for (var i = 0; i < pl; i++) { s = perRes[i]; pil = perRes[i].length; for (var j = 0; j <=pil; j++) { var tmp = s.substring(0, j) + left + s.substring(j, pl); arr.push(tmp); } } } else if (str.length == 1) { arr = [str]; } return arr; } perarr=recoper(str); //返回相鄰不重復(fù)的數(shù)量 return perarr.filter(function(val) { return !val.match(reg); }).length; } permAlone("aab");6、Friendly Date Ranges把常見的日期格式如:YYYY-MM-DD 轉(zhuǎn)換成一種更易讀的格式。
易讀格式應(yīng)該是用月份名稱代替月份數(shù)字,用序數(shù)詞代替數(shù)字來表示天 (1st 代替 1)。記住不要顯示那些可以被推測出來的信息: 如果一個日期區(qū)間里結(jié)束日期與開始日期相差小于一年,則結(jié)束日期就不用寫年份了。月份開始和結(jié)束日期如果在同一個月,則結(jié)束日期月份就不用寫了。另外, 如果開始日期年份是當前年份,且結(jié)束日期與開始日期小于一年,則開始日期的年份也不用寫。
解答:
function makeFriendlyDates(arr) { var dateArr = ["", "1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", "20th", "21st", "22nd", "23rd", "24th", "25th", "26th", "27th", "28th", "29th", "30th", "31st" ], monthArr = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], resarr = [], startTime = arr[0].replace(/-/g, "/"), endTime = arr[1].replace(/-/g, "/"); var newa = new Date(startTime); var newb = new Date(endTime); //判斷日期區(qū)間是否合理,不合理,直接返回。 if (newa.getTime() > newb.getTime()) { return; } //判斷是否相差小于一年,true為相差小于一年。 var caldate = function() { newa.setFullYear(newa.getFullYear() + 1); if (newa.getTime() <= newb) { return true; } else { return false; } }; var a = arr[0].replace(/-0?/g, " ").split(" "), b = arr[1].replace(/-0?/g, " ").split(" "), nowYear = new Date().getFullYear(); var str1 = monthArr[a[1]] + " " + dateArr[a[2]], str2 = dateArr[b[2]]; var morethanoneyear = caldate(); if (!morethanoneyear) { if (a[0] != nowYear) { //開始日期年份不是當前年份 str1 = str1 + ", " + a[0]; } if ((a[1] === b[1]) && (a[2] === b[2])) { //同年同月同日 str2 = ""; } else if (!((a[1] === b[1]) && (parseInt(a[2]) < parseInt(b[2])))) { str2 = monthArr[b[1]] + " " + str2; } } else { //相差超過一年 str1 = str1 + ", " + a[0]; str2 = monthArr[b[1]] + " " + str2 + ", " + b[0]; } if (str2 !== "") { resarr.push(str1, str2); } else { resarr.push(str1); } return resarr; } makeFriendlyDates(["2017-01-02", "2017-01-05"])7、Make a Person用下面給定的方法構(gòu)造一個對象。方法有 getFirstName(), getLastName(),getFullName(), setFirstName(first), setLastName(last), and setFullName(firstAndLast)。所有有參數(shù)的方法只接受一個字符串參數(shù)。所有的方法只與實體對象交互。
解答:
var Person = function(firstAndLast) { var firstAndLastarr=firstAndLast.split(" "), firstName=firstAndLastarr[0], lastName=firstAndLastarr[1]; this.getFirstName=function(){ return firstName; }; this.getLastName=function(){ return lastName; }; this.getFullName=function(){ firstAndLastarr[0]=firstName; firstAndLastarr[1]=lastName; return firstAndLastarr.join(" "); }; this.setFirstName=function(first){ firstName=first; }; this.setLastName=function(last){ lastName=last; }; this.setFullName=function(firstAndLast){ firstAndLastarr=firstAndLast.split(" "); firstName=firstAndLastarr[0]; lastName=firstAndLastarr[1]; }; }; var bob = new Person("Bob Ross"); bob.getFirstName();8、Map the Debris返回一個數(shù)組,其內(nèi)容是把原數(shù)組中對應(yīng)元素的平均海拔轉(zhuǎn)換成其對應(yīng)的軌道周期。
原數(shù)組中會包含格式化的對象內(nèi)容,像這樣 {name: "name", avgAlt: avgAlt}。解答:
function orbitalPeriod(arr) { var GM = 398600.4418; var earthRadius = 6367.4447; for(var i=0;i9、Pairwise 有一個能力數(shù)組[7,9,11,13,15],按照最佳組合值為20來計算,只有7+13和9+11兩種組合。而7在數(shù)組的索引為0,13在數(shù)組的索引為3,9在數(shù)組的索引為1,11在數(shù)組的索引為2。
所以我們說函數(shù):pairwise([7,9,11,13,15],20) 的返回值應(yīng)該是0+3+1+2的和,即6。第一種解答:
function pairwise(arr, arg) { var a = arr.reduce(function(prev, currv, index, array) { var l = array.length; for (var i = index + 1; i < l; i++) { if (array[index] + array[i] === arg) { arr[index] = "false"; arr[i] = "false"; return prev + i + index; } } return prev; }, 0); return a; } pairwise([1,4,2,3,0,5], 7);第二種解答:
function pairwise(arr, arg) { var l=arr.length,res=0; for(var i=0;i
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/81162.html
摘要:默認值,沒有定位,元素出現(xiàn)在正常的文檔流中。生成粘性定位的元素,容器的位置根據(jù)正常文檔流計算得出。和屬性的異同共同點對內(nèi)聯(lián)元素設(shè)置和屬性,可以讓元素脫離文檔流,并且可以設(shè)置其寬高。 position的值, relative和absolute分別是相對于誰進行定位的? 、relative:相對定位,相對于自己本身在正常文檔流中的位置進行定位。、absolute:生成絕對定位,相對于最近一...
摘要:相關(guān)頻道最后的坦白最后我得承認這一次我又標題黨了無非是想吸引更多前端初學者進來,希望大家都能少走一些彎路,也希望那些從零開始自學前端的同學更有勇氣去面對自己的選擇。 我是怎么走上前端開發(fā)這條路? 首先,我是個文科生,大學里只學過vb,覺得計算機編程這東西太玄乎,不是我玩得轉(zhuǎn)的。 后來機緣巧合去做了一家互聯(lián)網(wǎng)創(chuàng)業(yè)公司的HR,閱了上千份程序員的簡歷,面了上百個不同水平不同領(lǐng)域的程序員。跟程...
摘要:正式發(fā)布在過去的一周,正式發(fā)布,帶來大量改進和修復(fù)。這是自開展以來的第七個主要版本,并將在年月成為下一個分支。以后,如果使用具有已知安全問題的代碼,的用戶會收到警告通知。將自動檢查針對數(shù)據(jù)庫的安裝請求,并在代碼包含漏洞時發(fā)出警告通知。 1. Node.js 10 正式發(fā)布 在過去的一周,Node.js 10.0.0 正式發(fā)布,帶來大量改進和修復(fù)。這是自 Node.js Foundati...
摘要:正式發(fā)布在過去的一周,正式發(fā)布,帶來大量改進和修復(fù)。這是自開展以來的第七個主要版本,并將在年月成為下一個分支。以后,如果使用具有已知安全問題的代碼,的用戶會收到警告通知。將自動檢查針對數(shù)據(jù)庫的安裝請求,并在代碼包含漏洞時發(fā)出警告通知。 1. Node.js 10 正式發(fā)布 在過去的一周,Node.js 10.0.0 正式發(fā)布,帶來大量改進和修復(fù)。這是自 Node.js Foundati...
閱讀 2853·2021-11-22 15:22
閱讀 19263·2021-09-22 15:00
閱讀 1442·2021-09-07 09:58
閱讀 1245·2019-08-30 13:01
閱讀 2438·2019-08-29 16:27
閱讀 2352·2019-08-26 13:25
閱讀 1625·2019-08-26 12:13
閱讀 944·2019-08-26 11:53