/**
* 11. 用第二個陣列的資料去更新第乙個陣列資料(更新庫存)
* @param oldarr 原始資料
* @param newarr 新資料
* @return 返回更新後的老資料陣列並且根據名稱排序後的二維陣列
* * ps: 1. 兩個陣列都是二維陣列
* 2. 兩個陣列的內容要一致即元素的第乙個元素為數量,第二個元素為名稱,
* 比如:oldarr = [[22, "hello"]], newarr = [[33, "hello"]]; 更新後就是:[[55, "hello"]]
*/arrayhandler.prototype.updateinventory = function
(oldarr, newarr)
if (ua > ub)
if (ua == ub)
};if (oldarr.length === 0) return newarr.sort(compare);
if (newarr.length === 0) return oldarr.sort(compare);
var findflag = 0; // 找到存在的庫存標識
newarr.map(function
(newvalue)
});// 到這裡表示沒有庫存,直接新增
if (!findflag)
// 復位庫存標識
findflag = 0;
});// 排序
oldarr.sort(compare);
return oldarr;
}
/**
* 9. 模擬收銀抽屜,給出購買的物品**及所付金額,算出找零
* @param price 商品**
* @param cash 所付金額
* @param cid 剩餘金額的二維陣列
* @return 返回需要找零的金額的二維陣列,裡面包含了找零對應的面值
* * 最後乙個引數cid,即面值剩餘金額陣列,必須要和國家錢幣對應的面值金額相一致,且順序從小到大排
* 例如:[
* // 對應1美分(cent)、5美分(nickel)、10美分(dime,一角)、25美分(quarter)、
* // 1美元(one)、5美元(five)、10美元(ten)、20美元(twenty)、100美元(one hundred)
* ["penny", 1.01], ["nickel", 2.05], ["dime", 3.10], ["quarter", 4.25],
* ["one", 90.00], ["five", 55.00], ["ten", 20.00], ["twenty", 60.00], ["one hundred", 100.00]
* ]
* * todo:最後可以將dollar陣列,當成引數傳進去,與cid陣列的內容順序要一致,分別表示錢幣金額面值數,
* 根據基數base和國家錢幣面值不同,陣列會不相同
*/numberhandler.prototype.checkcashregister = function
(price, cash, cid) );
return totalmoney;
}// 餘額不足,沒法找了
var remain = gettotalmoney(cid);
if (remain == change) else
if (remain < change)
// 分別對應,1美分-5美分-1角-25美分-1美元-5美元-10美元-20美元-100美元
// 這裡還可以進行優化,讓dollar成為引數,而動態獲取相應國家的金額面值
// 比如代表中國的:[10, 50, 100, 500, 1000, 2000, 5000, 10000] ->
// 對應: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. 找零必須大於當前面值
// 2. 剩餘的當前面值的錢足夠的情況下
if (change > currmoney) else }}
var res = ;
// 組織最後需要找零的錢
var keys = object.keys(pay);
var idx = 0;
for (var j = 0; j < keys.length; j++)
// 找到最後,所有能找的面值加起來還不夠
// 這裡與最開始不同,這裡是過濾掉了所有找不開的面值
// 比如:要找0.05元,但是目前剩餘一張0.01和1元的面值,依舊判定為找不開
// 而最開始的是所有餘額加起來都不夠找
if (gettotalmoney(res) < change)
return res;
}
最近有點鬆懈了,加上組裡現在整個模組的業務都讓我乙個人搞,老大跑去做維護新系統去了,所以最近也很忙(藉口總是很多,呸………..!!!),還是要加緊學習,打好基礎,不能鬆懈了。今天整了這三個練習,記錄下,還算有點收穫吧。給自己打打氣,加油吧!!!
JavaScript回文演算法練習
function palindrome str var ss s.join if ss str return str palindrome 0 0 123 0 0 輸出0012300分享一下半成功的回文演算法案例。剛在h3cschool玩js的時候,發現乙個挺有意思的事情,就是正規表示式真的好奇怪。...
JavaScript陣列練習
找出元素 item 在給定陣列 arr 中的位置 function indexof arr,item return 1 計算給定陣列 arr 中所有元素的總和 function sum arr return sum 移除陣列 arr 中的所有值與 item 相等的元素。不要直接修改陣列 arr,結果...
八 JavaScript 表單驗證
body script 表單驗證 functionvalidateform e mail驗證 輸入的資料必須包含 符號和點號 同時,不可以是郵件位址的首字元,並且 之後需有至少乙個點號 functionvalidateemailform script formname myform action d...