ฉันได้ลองคำถาม FCC เมื่อเร็ว ๆ นี้เช่นเดียวกับการอัพเกรดเพื่อต่อสู้กับสัตว์ประหลาดฉันได้ผ่านระดับหนึ่งครั้งในแต่ละครั้งซึ่งค่อนข้างน่าสนใจสำหรับฉัน ฉันใช้เวลาในการทำอัลกอริทึมพื้นฐานการตรวจสอบส่วนหนึ่งในวันนี้ ตามเคล็ดลับบางอย่างมันค่อนข้างง่าย ฉันคิดว่าวิธีการจัดการคำถามบางอย่างนั้นคุ้มค่าที่จะเรียนรู้ ตัวอย่างเช่นบางครั้งคุณต้องประมวลผลตัวละครในโครงการ หากคุณไม่สามารถนึกถึงวิธีการที่เกี่ยวข้องบางอย่างมันค่อนข้างลำบาก ดังนั้นบันทึกไว้ที่นี่ หากคุณพบตัวละครหรือการประมวลผลอาร์เรย์ในอนาคตคุณสามารถค้นหาบทความนี้โดยหวังว่าจะได้รับพรอมต์แทนการแปลเอกสาร
หากคุณเห็นบล็อกเกอร์นี้หากคุณมีรหัสที่ดีกว่าและง่ายกว่าหรือความคิดที่ดีโปรดฝากข้อความไว้เพื่อสื่อสาร (ฉันคิดเสมอว่าโดยการเรียนรู้รหัสที่ยอดเยี่ยมของผู้อื่นเท่านั้นคุณสามารถก้าวหน้าได้เร็วขึ้นและการคิดที่ยืดหยุ่นมากขึ้น) สำหรับผู้เริ่มต้นพยายามทำด้วยตัวเองโดยไม่ต้องดูรหัส (คำถามต่อไปนี้ไม่จำเป็นต้องพิจารณาประเภทพารามิเตอร์การพูดอย่างเคร่งครัดการตัดสินควรทำกับประเภทพารามิเตอร์เช่น: typeof (arg) === จำนวน)
1. ฟื้นฟูสตริง
สตริงพลิก
ก่อนที่จะแปลงสตริงเป็นอาร์เรย์จากนั้นใช้วิธีย้อนกลับของอาร์เรย์เพื่อพลิกลำดับอาร์เรย์และในที่สุดก็แปลงอาร์เรย์เป็นสตริง
ผลลัพธ์ของคุณจะต้องเป็นสตริง
ฟังก์ชั่นย้อนกลับ (str) {str = str.split (''). reverse (). เข้าร่วม (''); return str;} reversestring ("สวัสดี");2. ตรวจสอบสำหรับ palindromes
หากสตริงที่กำหนดเป็น palindrome ให้ส่งคืนจริงมิฉะนั้นเท็จ
หากสตริงละเว้นเครื่องหมายวรรคตอนกรณีและช่องว่างและอ่านโดยตรงและอ่านตรงข้ามกับสตริงนี้คือ palindrome (palindrome)
โปรดทราบว่าคุณต้องลบเครื่องหมายวรรคตอนพิเศษและช่องว่างของสตริงแล้วแปลงสตริงเป็นตัวพิมพ์เล็กเพื่อตรวจสอบว่าสตริงเป็น palindrome
ค่าของพารามิเตอร์ฟังก์ชั่นสามารถเป็น "racecar", "racecar" และ "รถแข่ง"
ฟังก์ชั่น palindrome (str) {// ขอให้โชคดี! str = str.replace (/[/|/~ |/`|/! |/@|/#|/$ |/%|/^|/& |/*|//(|/) |/-|/_ |/+|/= |/// |//|/[|/] Marks นี่คือ Baidu ของฉันและฉันไม่คุ้นเคยกับกฎ JS = Str.replace (// s+/g); false;} palindrome ("ตา");/*palindrome ("ตา") ควรกลับมาเป็นจริง palindrome ("รถแข่ง") ควรกลับมาเป็นจริง palindrome ("ไม่ใช่ palindrome") ควรกลับเท็จ false.palindrome ("เกือบทั้งหมด") ควรคืน false.palindrome ("อายุของฉันคือ 0, 0 si ega ym.") ควรกลับมาเป็นจริง palindrome ("1 ตาสำหรับ 1 ตา") ควรกลับเท็จ3. เคสประโยค A ประโยค
ตรวจสอบให้แน่ใจว่าตัวอักษรตัวแรกของแต่ละคำในสตริงเป็นตัวพิมพ์ใหญ่และส่วนที่เหลือเป็นตัวพิมพ์เล็ก (เช่น: Titlecase ("ฉันเป็นหม้อชาเล็ก ๆ ") ควรกลับ "ฉันเป็นหม้อชาเล็ก ๆ " Titlecase ("สั้นและอ้วน") ควรกลับ "สั้นและอ้วน")
/*คำถามนี้ง่ายมาก สิ่งสำคัญคือการเข้าใจว่า Split () คือการแบ่งสตริงเป็น array join () คือการเปลี่ยนอาร์เรย์เป็นสตริง toLowerCase () touppercase () การแปลงเคส โปรดทราบว่ามันถูกต้องสำหรับตัวอักษรและอักขระอื่น ๆ (เช่น:/,!@) ไม่ถูกต้อง*/ฟังก์ชั่น titlecase (str) {str = str.split (""); // แบ่งส่วนสตริงลงในอาร์เรย์ตามช่องว่างสำหรับ (var i = 0; str [i] = str [i] .substring (0, 1) .touppercase () + str [i] .substring (1); } return str.join (""); // เชื่อมต่ออาร์เรย์เข้ากับสตริงผ่านช่องว่าง} titlecase ("ฉันเป็นหม้อชาเล็ก ๆ ");4. ยืนยันตอนจบ
ตรวจสอบว่าสตริง (STR) ลงท้ายด้วยสตริงที่ระบุ (เป้าหมาย) หรือไม่
ถ้าใช่กลับมาจริง ถ้าไม่กลับมาเป็นเท็จ ตัวอย่างเช่น: การยืนยัน ("bastian", "n") ควรกลับมาเป็นจริง การยืนยัน ("คอนเนอร์", "n") ควรกลับเท็จ การยืนยัน ("การเดินบนน้ำและการพัฒนาซอฟต์แวร์จากข้อกำหนดนั้นง่ายถ้าทั้งคู่แช่แข็ง", "สเปค") ควรกลับมาเป็นเท็จ
การยืนยันฟังก์ชั่น (str, target) {// "อย่ายอมแพ้และโชคดีจะพบคุณ" //-Falcor Return str.substr (str.length-target.length) == เป้าหมาย? จริง: เท็จ;} การยืนยัน ("bastian", "n"); การยืนยัน ("เขาต้องให้ชื่อใหม่แก่ฉัน", "na");/*การยืนยัน ("bastian", "n") ควรกลับมาจริงการยืนยัน ("คอนเนอร์", "n") false.confarmending ("เขาต้องให้ชื่อใหม่แก่ฉัน", "ชื่อ") ควรคืนค่าจริงการยืนยัน ("เขาต้องให้ชื่อใหม่แก่ฉัน", "ฉัน") ควรกลับมาเป็นจริงการยืนยัน ("เขาต้องให้ชื่อใหม่"5. การทำซ้ำสตริงทำซ้ำสตริง
พูดสิ่งสำคัญ 3 ครั้ง!
ทำซ้ำสตริงที่ระบุจำนวนครั้งและส่งคืนสตริงว่างถ้า NUM เป็นจำนวนลบ ตัวอย่างเช่น:
ทำซ้ำ ("*", 3) ควรกลับ "***"
ทำซ้ำ ("ABC", 3) ควรกลับ "ABCABCABC"
ทำซ้ำ ("ABC", 4) ควรกลับ "ABCABCABCABC"
ทำซ้ำ ("ABC", 1) ควรกลับ "ABC"
ทำซ้ำ ("*", 8) ควรกลับ "*********"
ทำซ้ำ ("ABC", -2) ควรกลับมา ""
เมื่อคุณไม่สามารถทำสิ่งที่ท้าทายให้เสร็จสิ้นอย่าลืมใช้การเคลื่อนไหวที่ดีที่สุด
นี่คือแหล่งข้อมูลบางอย่างที่จะช่วยคุณ:
•วัตถุสตริงส่วนกลาง
ฟังก์ชั่นทำซ้ำ (str, num) {// ทำซ้ำหลังจากฉัน var newsstr = str; if (num> 1) {สำหรับ (var i = 1; i <num; i ++) {str += newStr; } return str; } อื่นถ้า (num == 1) {return str; } else {return ""; }} ทำซ้ำ ("abc", 3); ทำซ้ำ ("*", 3);6. ลิงลูก
ลิงกินกล้วย แต่แบ่งมันออกเป็นหลายส่วนเพื่อกินมัน!
แบ่งอาร์เรย์ arr เป็นหลายบล็อกอาร์เรย์ตามขนาดอาร์เรย์ที่ระบุ
ตัวอย่างเช่น: [[1,2,3,4], 2) = [[1,2], [3,4]];
ก้อน ([1,2,3,4,5], 2) = [[1,2], [3,4], [5]];
ฟังก์ชั่น chunk (arr, size) {// break up.var arr1 = []; สำหรับ (var i = 0; i <arr.length; i = i + size) {var arr2 = arr; arr1.push (arr2.slice (i, i + size)); } return arr1;} chunk (["a", "b", "c", "d"], 2);7. Falsy Bouncer
ราชาลิงที่แท้จริงและปลอม!
ลบค่าเท็จทั้งหมดในอาร์เรย์
ใน JavaScript ค่าเท็จเป็นเท็จ, null, 0, "", undefined และ nan
เมื่อคุณไม่สามารถทำสิ่งที่ท้าทายให้เสร็จสิ้นอย่าลืมใช้การเคลื่อนไหวที่ดีที่สุด
นี่คือแหล่งข้อมูลบางอย่างที่จะช่วยคุณ:
•วัตถุบูลีน
• array.filter ()
ตัวอย่างเช่น:
bouncer ([7, "กิน", "", false, 9]) ควรกลับมา [7, "กิน", 9]
Bouncer (["A", "B", "C"]) ควรกลับมา ["A", "B", "C"]
bouncer ([false, null, 0, nan, undefined, ""] ควรกลับมา []
bouncer ([1, null, nan, 2, undefined]) ควรกลับมา [1, 2]
/* คำถามนี้เกี่ยวกับการทำความเข้าใจตัวกรอง นี่คือรหัสเริ่มต้นของฉัน มันไม่ได้เขียนดีและมีค่าอ้างอิงเพียงเล็กน้อย คุณควรให้ความสนใจกับการเปรียบเทียบ NAN ตัวคุณเองไม่เท่ากับตัวคุณเอง (Nan! = nan)*/ฟังก์ชั่น bouncer (arr) {// อย่าแสดงรหัสเท็จให้กับคนโกหกนี้ var arr1 = []; var j = 0; arr.filter (ฟังก์ชั่น (val, index) {ถ้า (val === false || val === null || val === 0 || val === "" | | val === undefined || val! == val) {arr1.push (ดัชนี);}}); var len = arr1.length; สำหรับ (var i = 0; i <len; i ++) {arr.splice (arr1 [i] -j, 1); J ++; } return arr;} bouncer ([7, "ate", "", false, 9]);8. ไกลและทำลาย
ปูนของ Jinx!
ใช้ฟังก์ชัน Destroyer พารามิเตอร์แรกคืออาร์เรย์ที่จะถูกทำลายและพารามิเตอร์ที่เหลือคือค่าที่จะถูกทำลาย
ตัวอย่างเช่น:
เรือพิฆาต ([1, 2, 3, 1, 2, 3], 2, 3) ควรกลับมา [1, 1]
เรือพิฆาต ([1, 2, 3, 5, 1, 2, 3], 2, 3) ควรกลับมา [1, 5, 1]
เรือพิฆาต ([3, 5, 1, 2, 2], 2, 3, 5) ควรกลับมา [1]
เรือพิฆาต ([2, 3, 2, 3], 2, 3) ควรกลับมา []
เรือพิฆาต (["ต้นไม้", "แฮมเบอร์เกอร์", 53], "ต้นไม้", 53) ควรกลับมา ["แฮมเบอร์เกอร์"]
นี่คือแหล่งข้อมูลบางอย่างที่จะช่วยคุณ:
•อาร์กิวเมนต์วัตถุ
• array.filter ()
ฟังก์ชั่นเรือพิฆาต (arr) {// ลบค่าทั้งหมด var temparguments = อาร์กิวเมนต์; return arr.filter (ฟังก์ชั่น (รายการ) {สำหรับ (var i = 1; i <temparguments.length; i ++) {ถ้า (รายการ == temparguments [i]) {return false;}} return true;});} destroyer ([1, 2, 3, 1, 2, 3], 2, 3)9. ฉันอยู่ที่ไหน
ฉันอยู่ที่ไหน
แรกเรียงลำดับอาร์เรย์จากนั้นค้นหาค่าที่ระบุที่ตำแหน่งของอาร์เรย์และในที่สุดก็ส่งคืนดัชนีที่สอดคล้องกับตำแหน่ง
ตัวอย่างเช่น: โดยที่ ([1,2,3,4], 1.5) ควรส่งคืน 1 เพราะ 1.5 ถูกแทรกลงในอาร์เรย์ [1, 2, 3, 4] และกลายเป็น [1, 1.5, 2, 3, 4] และค่าดัชนีที่สอดคล้องกับ 1.5 คือ 1
ในทำนองเดียวกันโดยที่ ([20,3,5], 19) ควรกลับมา 2 เพราะอาร์เรย์จะถูกจัดเรียงเป็นครั้งแรกเป็น [3,5,20], 19 ถูกแทรกลงในอาร์เรย์ [3,5,20] และกลายเป็น [3,5,19,20] และค่าดัชนีที่สอดคล้องกับ 19 คือ 2
นี่คือแหล่งข้อมูลบางอย่างที่จะช่วยคุณ:
• array.sort ()
ฟังก์ชั่นที่ (arr, num) {// ค้นหาสถานที่ของฉันในอาร์เรย์ที่เรียงลำดับนี้ // หมายเหตุการเรียงลำดับ () เรียงลำดับ () การเรียงลำดับกฎ arr.sort (ฟังก์ชั่น (a, b) {return a- b;}); สำหรับ (var i = 0; i <arr.length; i ++) {ถ้า (arr [i]> num | arr [i] == num) {return i; }} return arr.length;} โดยที่ ([5, 3, 20, 3], 5);10. Caesars Cipher
ให้พระเจ้าเป็นของพระเจ้าและซีซาร์เป็นของซีซาร์
ต่อไปเราจะแนะนำรหัสผ่าน Caesar Caesar Cipher หรือที่เรียกว่ารหัสผ่าน Shift ซึ่งเป็นที่นิยมทั่วโลก
รหัสผ่านกะหมายความว่าตัวอักษรในรหัสผ่านจะถูกเลื่อนตามจำนวนที่ระบุ
กรณีทั่วไปคือรหัสผ่าน ROT13 และตัวอักษรจะถูกเลื่อนโดย 13 ตำแหน่ง โดย 'a' ↔ 'n', 'b' ↔ 'o' และอื่น ๆ
เขียนฟังก์ชั่น ROT13 เพื่อใช้สตริงที่เข้ารหัสอินพุตและเอาต์พุตสตริงถอดรหัส
ตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่อย่าแปลงอักขระที่ไม่ใช่ตัวอักษรใด ๆ (ตัวอย่างเช่น: ช่องว่างเครื่องหมายวรรคตอน) หากคุณพบกับตัวละครพิเศษเหล่านี้ให้ข้ามพวกเขา
ตัวอย่างเช่น:
ROT13 ("Serr PBQR PNZC") ควรได้รับการถอดรหัสเป็น "ค่ายรหัสฟรี"
ROT13 ("serr cvmmn!") ควรได้รับการถอดรหัสเป็น "พิซซ่าฟรี!"
ROT13 ("serr ybir?") ควรได้รับการถอดรหัสเป็น "รักฟรี?"
ROT13 ("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK.") ควรได้รับการถอดรหัสเป็น "สุนัขสีน้ำตาลด่วนกระโดดข้ามสุนัขจิ้งจอกขี้เกียจ"
นี่คือแหล่งข้อมูลบางอย่างที่จะช่วยคุณ:
• string.charcodeat ()
• String.FromCharcode ()
ฟังก์ชั่น rot13 (str) {// lbh qvq vg! var arr = str.touppercase (). แยก (""); var str1 = []; สำหรับ (var i = 0; i <arr.length; i ++) {var arr1 = arr [i] .split (""); สำหรับ (var j = 0; j <arr1.length; j ++) {var num = arr1 [j] .charcodeat (); if (num> = 65 && num <= 90) {arr1 [j] = num + 13> 90? String.FromCharcode (64 + (NUM + 13 - 90)): String.FromCharcode (NUM + 13); // 64 + (num + 13 - 90) เพื่อทำความเข้าใจว่าทำไมมันถึงเป็น 64,}} str1.push (arr1.join ("")); } return str1.join ("");} // เปลี่ยนอินพุตด้านล่างเป็น testrot13 ("serr pbqr pnzc");บทความข้างต้นกล่าวถึงปัญหาอัลกอริทึมพื้นฐานบางอย่างในตัวละครและอาร์เรย์ใน JS เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น