###1.Validate US Telephone Numbers 如果傳入字串是一個有效的美國電話號碼,則返回 true.
function telephoneCheck(str) {
return /^1? ?(\d{3}|\(\d{3}\))[ -]?\d{3}[ -]?\d{4}$/.test(str);
}
telephoneCheck("555-555-5555");
複製程式碼
###2.Symmetric Difference 建立一個函式,接受兩個或多個陣列,返回所給陣列的 對等差分(symmetric difference) (△ or ⊕)陣列.
function sym(args) {
let argsArr = Array.from(arguments);
let result = argsArr.reduce((arr1, arr2) => {
var arr1 = dis(arr1);
var arr2 = dis(arr2);
return symDif(arr1, arr2);
}, [])
return result.sort((a, b) => {
return a - b;
});
}
//去除每個陣列中重複的數字
dis = (arr) => {
return arr.filter((item, index, array) => {
return array.indexOf(item) == index;
})
}
//兩個陣列對等差分
symDif = (arr1, arr2) => {
var newArr = arr1.filter((item) => {
var index = arr2.indexOf(item);
if (index < 0) {
return true;
} else {
arr2.splice(index, 1);
return false;
}
});
return newArr.concat(arr2);
}
sym([1, 2, 3], [5, 2, 1, 4]);
複製程式碼
###3.Exact Change 設計一個收銀程式 checkCashRegister() ,其把購買價格(price)作為第一個引數 , 付款金額 (cash)作為第二個引數, 和收銀機中零錢 (cid) 作為第三個引數.
cid 是一個二維陣列,存著當前可用的找零.
當收銀機中的錢不夠找零時返回字串 "Insufficient Funds". 如果正好則返回字串 "Closed".
否則, 返回應找回的零錢列表,且由大到小存在二維陣列中.
###4.Inventory Update 依照一個存著新進貨物的二維陣列,更新存著現有庫存(在 arr1 中)的二維陣列. 如果貨物已存在則更新數量 . 如果沒有對應貨物則把其加入到陣列中,更新最新的數量. 返回當前的庫存陣列,且按貨物名稱的字母順序排列.
自己驗證的時候沒問題
function updateInventory(arr1, arr2) {
// 請保證你的程式碼考慮到所有情況
const newArr = curInv.map((item) => item[1]);
newInv.forEach((item, index, arr) => {
var i = newArr.indexOf(item[1]);
if (i >= 0) {
curInv[i][0] += newInv[index][0];
} else {
curInv.push(newInv[index]);
}
})
return curInv.sort((a, b) => {
return a[1].charCodeAt(0) - b[1].charCodeAt(0);
});
}
// 倉庫庫存示例
var curInv = [
[21, "Bowling Ball"],
[2, "Dirty Sock"],
[1, "Hair Pin"],
[5, "Microphone"]
];
var newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
updateInventory(curInv, newInv);
複製程式碼
5.No repeats please 把一個字串中的字元重新排列生成新的字串,返回新生成的字串裡沒有連續重複字元的字串個數.連續重複只以單個字元為準
例如, aab 應該返回 2 因為它總共有6中排列 (aab, aab, aba, aba, baa, baa), 但是隻有兩個 (aba and aba)沒有連續重複的字元 (在本例中是 a).