js高階指令碼演算法

2021-08-13 23:43:07 字數 3820 閱讀 2363

1.判斷**號碼演算法挑戰

function

telephonecheck

(str) \)(\s|-|)[1-9](\s|-|)[1-9])$/;

var matchstr2 = /^(((1(\s)|)|)[1-9](\s|-|)[1-9](\s|-|)[1-9])$/;

return (str.match(matchstr) != null||str.match(matchstr2)!=null);

}

2集合交集演算法挑戰

集合交集演算法挑戰

function

sym(args) );

var d=b.filter(function

(item));

arr=arr.concat(d);

a=arr;

}arr=unique(arr);

return arr;

}function

unique

(arr)

3收銀系統演算法挑戰

function

checkcashregister

(price, cash, cid)

// 付款不足

if (price > cash)

var base=100;//金額基數

var change=(cash-price)*base; //找零

//定義乙個函式,用來求零錢和。

var gettotalmoney=function

(arr));//疊代演算法:求零錢之和。

return totalmoney;

}//餘額不足,沒法找了

var remain = gettotalmoney(cid);

if (remain==change)else

if(remain < change);

// 對應:1角-5角-1元-5元-10元-20元-50元-100元(以元為單位的基礎上乘以面值基數:base這裡為100)

var dollar= [1, 5, 10, 25, 100, 500, 1000, 2000, 10000]; // todo

var pay={};//儲存的key:dollar中面值索引,value:要找的此面值的個數

var currlast=0;// 當前面值所剩餘額

var currmoney=0;//當前金錢面額(dollar中對應的值)

for (var i=dollar.length-1;i>=0;i--)

//當前金額面值

currmoney=dollar[i];

// 在當前面值下取錢必須同時滿足兩個條件:

// 1. 找零必須大於當前面值,比如找零51元,才可以從50裡面取錢。

// 2. 剩餘的當前面值的總額足夠,比如找4元,但我只有3張1元,就不符合取錢條件

if(change>currmoney)else

}}//迴圈結束之後得到乙個pay物件,裡面包括了面值和對應應找的錢。

console.log(pay)

var res=;

// 組織最後需要找零的錢,作為最終返回的陣列。

var keys=object.keys(pay);//找到pay物件

var idx=0;

var total=0;//應找零錢(pay)的總額

for (var j=0; j// 需要找零的面值索引:比如100,50,20,10...等等

idx=parseint([keys[j]]);

//計算該面值最後找出的零錢(公式:面值x需要找出數量 / 金錢面值基數)

cid[idx][1]=dollar[idx]*pay[keys[j]]/base;

res.unshift(cid[idx]);//把結果新增到陣列的開頭。符合由面值大到小的規律。

total += dollar[idx]*pay[keys[j]];

// 順便計算下這裡計算的結果應該和最開始需要找零的金額一致:

// 面值x需要找出數量——返回到total結果中

} // 找到最後,所有能找的面值加起來還不夠

// 這裡與最開始不同,這裡是過濾掉了所有找不開的面值

// 比如:要找0.05元,但是目前剩餘一張0.01和1元的面值,依舊判定為找不開

// 而最開始的是所有餘額加起來都不夠找

if (totalreturn

"insufficient funds";

}console.log(res)

return res;

}

4庫存更新演算法挑戰

function

updateinventory

(arr1, arr2) );

arr2.foreach(function

(v) else

});return arr1.sort(function

(a,b));

}

5日期改寫演算法挑戰

function

makefriendlydates

(arr)

return str2num;

} //date1的字串表示大部分情況下都是需要年月日的。date2的如果不是在同年同月,大部分情況下都是需要月日的

date1str=months[date1[1]-1]+" "+friendlydate(date1[2])+", "+date1[0];

if(date1[1]===date2[1]&&date1[0]===date2[0])else

//如果大於一年,date2加上年份;如果小於一年,而且date1的日期是今年,那麼去掉date1的年份。

if((date2[0]-date1[0]>1)||((date2[0]-date1[0]===1)&&(date2[1]-date1[1]>0))||((date2[0]-date1[0]===1)&&(date2[1]-date1[1]===0)&&date2[2]-date1[2]>=0))else

if(date1[0]==yearnow)

//把兩個日期放在同乙個陣列裡輸出(如果是同年同月同日,**裡的date2str無用,所以**是可以改善的)。

datearr[datearr.length]=date1str;

if(date1.tostring()!==date2.tostring())

return datearr;

}

6類及物件構建演算法挑戰

var person = function

(firstandlast) ;

this.getlastname=function

(); this.getfullname=function

(); this.setfirstname=function

(first);

this.setlastname=function

(last);

this.setfullname=function

(firstandlast);

};

7軌道週期演算法挑戰

function

orbitalperiod

(arr)

return arr;

}

8資料組合求值演算法挑戰

function

pairwise

(arr, arg)

}} return res;

}

js中級指令碼演算法

摘要 區間求值演算法 function sumall arr else return sum sumall 1,4 傳遞給你乙個包含兩個數字的陣列。function sumall arr else return sum sumall 1,4 傳遞給你乙個包含兩個數字的陣列。返回這兩個數字和它們之間所...

js中級指令碼演算法

摘要 區間求值演算法 function sumall arr else return sum sumall 1,4 傳遞給你乙個包含兩個數字的陣列。區間求值演算法 function sumall arr else return sum sumall 1,4 傳遞給你乙個包含兩個數字的陣列。返回這兩個...

Bash Shell指令碼高階

shell指令碼中會有一些命令列中不常用的命令,但是在指令碼中卻非常有用的命令。還有在指令碼中有一些常用的功能,有的是自己專案中見到的,有的是網上搜到的,慢慢積累。echo n please enter a count 加 n表示輸出不換行 mkdir p home user 一次建立多個目錄用於設...