เนื่องจากเว็บและแอปพลิเคชันมีความซับซ้อนมากขึ้น JavaScript และ Node.js จึงกลายเป็นข้อกำหนดทั่วไปในละครของนักพัฒนามากขึ้น เพื่อปรับปรุง code-foo ของคุณและลดอาการปวดหัวที่คุณพบ คุณสามารถกำหนดฟังก์ชันบางอย่างในช่วงต้นของโค้ดซึ่งทำงานง่ายๆ ให้สำเร็จได้อย่างรวดเร็ว
โปรดทราบว่า Javascript ไม่เหมือนกับ Java ตรวจสอบความแตกต่างที่นี่
1. สับเปลี่ยนค่าในอาร์เรย์
เช่นเดียวกับการสับไพ่ คุณยังสามารถสับเปลี่ยนค่าในอาร์เรย์ได้บ่อยเท่าที่ต้องการใน JavaScript ด้วยบรรทัดเดียวนี้:
const shuffleArray = (arr) => arr.sort(() => 0.5 - Math.random());
เมื่อเปรียบเทียบกับสำรับไพ่แล้ว นี่คือสิ่งที่ดูเหมือนว่าหากฉันต้องการสับเปลี่ยน 52 ค่า:
let myarray = Array.from({length:52},(v,k)=>k+1); console.log(shuffleArray(myarray));
รหัสควรเปิดเผยค่าที่สับสนแบบสุ่มในเอาต์พุตคอนโซลของคุณ
2. ตรวจสอบว่าวันที่เป็นวันหยุดสุดสัปดาห์หรือวันธรรมดา
ด้วยการใช้ตัวถูกดำเนินการที่เหลืออย่างง่าย คุณสามารถตรวจสอบว่าวันหนึ่งตรงกับวันหยุดสุดสัปดาห์ใน JavaScript หรือไม่:
const isWeekend = (date) => date.getDay() % 6 == 0;
หากคุณต้องการเปลี่ยนสิ่งนั้นเพื่อตรวจสอบว่าวันที่เป็นปัญหาตรงกับวันธรรมดาหรือไม่ ให้กลับการเปรียบเทียบล่าสุด:
const isWeekday = (date) => date.getDay() % 6 !== 0;
ในรหัสต่อไปนี้ ฉันตรวจสอบว่าวันนี้เป็นวันหยุดสุดสัปดาห์หรือไม่:
console.log(isWeekend(new Date()));
เป็นทางเลือกแทนการกำหนด isWeekday
. แยกต่างหาก หรือ isWeekend
ตัวแปร คุณสามารถใช้ NOT
. ได้ ตัวถูกดำเนินการในขณะที่แสดง if-then-else
คำสั่งสำหรับหนึ่งในสองตัวแปรดังนี้:
if(!isWeekend(new Date())) { console.log("Today falls on a weekday."); } else { console.log("Today falls on a weekend."); }
3. ตัดตัวเลขเป็นจุดทศนิยมเฉพาะ
ผลลัพธ์ที่คุณให้กับผู้ใช้ของคุณต้องเรียบง่ายที่สุดเท่าที่จะเป็นไปได้ และไม่มีอะไรทำให้ไซต์หรือแอปของคุณไม่สวยไปกว่าการเห็นชุดตัวเลขจำนวนมากที่สับสน หากต้องการตัดจุดทศนิยมที่มีนัยสำคัญน้อยกว่าในตัวเลขและแสดงให้ผู้ใช้เห็นเช่นนั้น ให้คว้าคำจำกัดความที่ดีนี้:
const decimalFormat = (n, places) => ~~(Math.pow(10, places) * n) / Math.pow(10, places);
เพื่อทดสอบสิ่งนี้ ฉันกำหนดค่าตัวเลขด้วยจำนวนทศนิยมที่ไร้สาระ และเรียกใช้ฟังก์ชันด่วนนี้เพื่อตัดเป็นทศนิยมสองตำแหน่ง
let deciwow = 299.39542014592 console.log(decimalFormat(deciwow, 2));
ผลลัพธ์ที่ได้ควรจะดูน้อยลง
4. แปลงอุณหภูมิ
ใน JavaScript ไม่มีวิธีมาตรฐานในการแปลงระหว่างเซลเซียสเป็นฟาเรนไฮต์ แต่ด้วยบรรทัดเดียวง่ายๆ สองบรรทัด คุณสามารถสร้างมาตรฐานของคุณเองได้
สำหรับเซลเซียสถึงฟาเรนไฮต์:
const cToF = (celsius) => celsius * 9/5 + 32;
และสำหรับฟาเรนไฮต์ถึงเซลเซียส:
const fToC = (fahrenheit) => (fahrenheit - 32) * 5/9;
ในเมืองของฉัน อุณหภูมิอยู่ที่ -2 องศาเซลเซียส การใช้ชั้นเดียวในการแปลงเซลเซียสเป็นฟาเรนไฮต์ เราจะค้นหาว่าสิ่งนี้มีความหมายอย่างไรกับคนที่อาศัยอยู่ในสหรัฐอเมริกา:
cToF(-2);
นิพจน์นั้นให้อุณหภูมิ 28.4 องศาฟาเรนไฮต์
5. ตรวจสอบว่ามีคนใช้โหมดมืดอยู่หรือไม่
หากคุณต้องการให้เนื้อหาที่คุณแสดงเป็นไปตามรูปแบบสีของบุคคลที่ใช้รหัสของคุณ JavaScript มีวิธีการตรวจจับว่ามีใครบางคนกำลังใช้โหมดมืดหรือไม่ เพื่อให้คุณสามารถปรับสีได้ตามนั้น วิธีการนี้ซับซ้อนเล็กน้อยในการเขียน แต่คุณสามารถย่อให้สั้นลงโดยใช้บรรทัดเดียวนี้:
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
นี่คือตัวอย่างการตรวจสอบโดยใช้ตัวแปรนี้:
if (isDarkMode) { console.log("This screen is in dark mode."); } else { console.log("This screen is not using dark mode."); }
โปรดทราบว่าโค้ดนี้ใช้ได้เฉพาะใน JavaScript สำหรับเบราว์เซอร์เท่านั้น Node.js ไม่รองรับ window
.
6. รับค่าเฉลี่ยของอาร์เรย์ของตัวเลข
เมื่อต้องจัดการกับชุดข้อมูล JavaScript มีฟังก์ชันที่สะดวกต่อการใช้งานซึ่งแนบมากับอาร์เรย์ที่ให้คุณคำนวณทางคณิตศาสตร์ที่จำเป็นเพื่อให้ได้ผลรวมของค่าทั้งหมดของตารางหนึ่งๆ แล้วหารตัวเลขเหล่านี้ด้วยความยาวของตาราง หากต้องการทำสิ่งนี้อย่างหรูหราในโค้ดบรรทัดเดียว คุณต้องทำสิ่งนี้เท่านั้น:
const getAverage = (arr) => arr.reduce((a, b) => a + b, 0) / arr.length;
ที่นี่ฉันสร้างชุดข้อมูลและดึงค่าเฉลี่ยของค่าทั้งหมดออกมาผ่านคอนโซล:
let dataset = [2, 14, 88, 204, 1515, 1294, 12, 144]; console.log(getAverage(dataset));
การใช้รหัสนี้ ผลลัพธ์ของคุณควรเป็น 409.125
7. สร้าง UUID
หากคุณต้องการรวบรวมสถิติและข้อมูลจากผู้ที่ใช้แอปพลิเคชันของคุณ (เช่น โดยการสร้างคุกกี้) วิธีหนึ่งที่ดีที่สุดในการทำเช่นนี้โดยไม่ถูกบุกรุกคือการสร้าง Universally Unique Identifier (UUID) JavaScript ไม่มีวิธีง่ายๆ ในการสร้าง UUID ที่สอดคล้องกับ RFC4122 (แม้ว่า Node.js จะมี uuid
แพ็คเกจ npm ที่ให้ฟังก์ชันนี้พร้อมใช้งานทันที)
ใน JS คุณสามารถเปิด UUID ที่สร้างขึ้นใหม่สำหรับผู้ใช้ของคุณด้วยนิพจน์บรรทัดเดียว:
const genUUID = (a) => (a ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, genUUID));
ที่นี่ ฉันทดสอบผลลัพธ์:
console.log(genUUID());
8. รับจำนวนวันระหว่างสองวันที่
เมื่อกำหนดอายุของค่าใดค่าหนึ่ง (เช่น บัญชีของผู้ใช้) คุณจะต้องคำนวณจำนวนวันที่ผ่านไปตั้งแต่จุดหนึ่ง นี่เป็นตัวอย่างง่ายๆ ที่ทำแบบนั้น:
const ageDays = (old, recent) => Math.ceil(Math.abs(old - recent) / (1000 * 60 * 60 * 24));
ตัวอย่างเช่น กรณีการใช้งาน เราแสร้งทำเป็นว่าเรากำลังประเมินอายุของผู้ใช้ที่สร้างบัญชีเมื่อวันที่ 28 ธันวาคม 2012 และใช้การประกาศนี้เพื่อรับจำนวนวันระหว่างวันที่นั้นถึงวันนี้:
console.log(ageDays(new Date('2012-12-28'), new Date()));
ในขณะที่เขียนสิ่งนี้ ควรให้ผลลัพธ์เป็น 3298 วัน
9. สร้างตัวเลขสุ่มภายในช่วง
บางครั้งการสร้างตัวเลขสุ่มก็ไม่เพียงพอ คุณอาจต้องจำกัดเงื่อนไขที่จะสร้างมันขึ้นมา ด้วยบรรทัดเดียวนี้ คุณจะสร้างตัวเลขภายในช่วงที่กำหนด:
const rangeRandom = (low, high) => Math.floor(Math.random() * (high - low + 1)) + low;
การทดสอบนี้น่าจะง่าย:
console.log(rangeRandom(400, 20000));
คำถามที่พบบ่อย
1. เหตุใดจึงต้องใช้ UUID ในคุกกี้
เนื่องจากโดยธรรมชาติแล้วคุกกี้จะล่วงล้ำและใช้พื้นที่ในเครื่องของผู้ใช้ คุณจึงควรตั้งเป้าหมายให้มีประสิทธิภาพและไม่บุกรุกมากที่สุดเมื่อใช้เครื่องมือเหล่านี้เพื่อรวบรวมข้อมูล การใช้ UUID ให้ประโยชน์สองเท่า อย่างแรก มันย่อพื้นที่ว่างบนที่เก็บข้อมูลบนไคลเอนต์ให้เหลือน้อยที่สุด เนื่องจากตัวระบุมีความยาวเพียง 128 บิต ประการที่สอง ขึ้นอยู่กับข้อมูลส่วนบุคคลของผู้ใช้
2. ฉันได้รับข้อผิดพลาด "ไม่ได้กำหนดหน้าต่าง" ใน Node.js เมื่อตรวจพบโหมดมืด ต้องทำอย่างไร
Node.js ไม่สามารถโทรไปยังโมดูลฝั่งไคลเอ็นต์ได้ เนื่องจากไม่มีความสัมพันธ์ระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ภายในแบบเดียวกับที่ JavaScript มี One-liner สำหรับการตรวจจับโหมดมืดในบทความนี้มีไว้สำหรับ JavaScript บนเบราว์เซอร์โดยเฉพาะ
3. รหัสนี้เป็นสากลสำหรับเบราว์เซอร์ทั้งหมดหรือไม่
โค้ด JavaScript ใช้ล่ามที่ควรจะทำงานในระดับสากล แม้ว่าในทางทฤษฎีจะทำงานได้กับทุกเบราว์เซอร์ แต่วิธีที่พวกเขาตีความโค้ดของคุณอาจแตกต่างกันเล็กน้อยโดยเฉพาะกับซอฟต์แวร์ที่เก่ามาก ในกรณีของบรรทัดเดียวทั้งหมดที่แสดงไว้ที่นี่ ทั้งหมดควรส่งคืนผลลัพธ์เดียวกันโดยไม่คำนึงถึงเบราว์เซอร์ที่ผู้ใช้ของคุณเรียกใช้โค้ด อย่างไรก็ตาม โปรดทราบว่าคุณลักษณะบางอย่างที่คุณใช้ใน JavaScript โดยทั่วไปอาจไม่ทำงานบนเบราว์เซอร์ เช่น Pale Moon, Internet Explorer หรือเบราว์เซอร์เวอร์ชันต้นปี 2000 ที่กำลังพัฒนาอยู่ในขณะนี้