Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> ซอฟต์แวร์

9 JavaScript/Node.js One-Liners ที่คุณควรรู้

9 JavaScript/Node.js One-Liners ที่คุณควรรู้

เนื่องจากเว็บและแอปพลิเคชันมีความซับซ้อนมากขึ้น 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));

รหัสควรเปิดเผยค่าที่สับสนแบบสุ่มในเอาต์พุตคอนโซลของคุณ

9 JavaScript/Node.js One-Liners ที่คุณควรรู้

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.");
}
9 JavaScript/Node.js One-Liners ที่คุณควรรู้

3. ตัดตัวเลขเป็นจุดทศนิยมเฉพาะ

ผลลัพธ์ที่คุณให้กับผู้ใช้ของคุณต้องเรียบง่ายที่สุดเท่าที่จะเป็นไปได้ และไม่มีอะไรทำให้ไซต์หรือแอปของคุณไม่สวยไปกว่าการเห็นชุดตัวเลขจำนวนมากที่สับสน หากต้องการตัดจุดทศนิยมที่มีนัยสำคัญน้อยกว่าในตัวเลขและแสดงให้ผู้ใช้เห็นเช่นนั้น ให้คว้าคำจำกัดความที่ดีนี้:

const decimalFormat = (n, places) => ~~(Math.pow(10, places) * n) / Math.pow(10, places);

เพื่อทดสอบสิ่งนี้ ฉันกำหนดค่าตัวเลขด้วยจำนวนทศนิยมที่ไร้สาระ และเรียกใช้ฟังก์ชันด่วนนี้เพื่อตัดเป็นทศนิยมสองตำแหน่ง

let deciwow = 299.39542014592
 
console.log(decimalFormat(deciwow, 2));

ผลลัพธ์ที่ได้ควรจะดูน้อยลง

9 JavaScript/Node.js One-Liners ที่คุณควรรู้

4. แปลงอุณหภูมิ

ใน JavaScript ไม่มีวิธีมาตรฐานในการแปลงระหว่างเซลเซียสเป็นฟาเรนไฮต์ แต่ด้วยบรรทัดเดียวง่ายๆ สองบรรทัด คุณสามารถสร้างมาตรฐานของคุณเองได้

สำหรับเซลเซียสถึงฟาเรนไฮต์:

const cToF = (celsius) => celsius * 9/5 + 32;

และสำหรับฟาเรนไฮต์ถึงเซลเซียส:

const fToC = (fahrenheit) => (fahrenheit - 32) * 5/9;

ในเมืองของฉัน อุณหภูมิอยู่ที่ -2 องศาเซลเซียส การใช้ชั้นเดียวในการแปลงเซลเซียสเป็นฟาเรนไฮต์ เราจะค้นหาว่าสิ่งนี้มีความหมายอย่างไรกับคนที่อาศัยอยู่ในสหรัฐอเมริกา:

cToF(-2);

นิพจน์นั้นให้อุณหภูมิ 28.4 องศาฟาเรนไฮต์

9 JavaScript/Node.js One-Liners ที่คุณควรรู้

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

9 JavaScript/Node.js One-Liners ที่คุณควรรู้

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());
9 JavaScript/Node.js One-Liners ที่คุณควรรู้

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 JavaScript/Node.js One-Liners ที่คุณควรรู้

9. สร้างตัวเลขสุ่มภายในช่วง

บางครั้งการสร้างตัวเลขสุ่มก็ไม่เพียงพอ คุณอาจต้องจำกัดเงื่อนไขที่จะสร้างมันขึ้นมา ด้วยบรรทัดเดียวนี้ คุณจะสร้างตัวเลขภายในช่วงที่กำหนด:

const rangeRandom = (low, high) => Math.floor(Math.random() * (high - low + 1)) + low;

การทดสอบนี้น่าจะง่าย:

console.log(rangeRandom(400, 20000));
9 JavaScript/Node.js One-Liners ที่คุณควรรู้

คำถามที่พบบ่อย

1. เหตุใดจึงต้องใช้ UUID ในคุกกี้

เนื่องจากโดยธรรมชาติแล้วคุกกี้จะล่วงล้ำและใช้พื้นที่ในเครื่องของผู้ใช้ คุณจึงควรตั้งเป้าหมายให้มีประสิทธิภาพและไม่บุกรุกมากที่สุดเมื่อใช้เครื่องมือเหล่านี้เพื่อรวบรวมข้อมูล การใช้ UUID ให้ประโยชน์สองเท่า อย่างแรก มันย่อพื้นที่ว่างบนที่เก็บข้อมูลบนไคลเอนต์ให้เหลือน้อยที่สุด เนื่องจากตัวระบุมีความยาวเพียง 128 บิต ประการที่สอง ขึ้นอยู่กับข้อมูลส่วนบุคคลของผู้ใช้

2. ฉันได้รับข้อผิดพลาด "ไม่ได้กำหนดหน้าต่าง" ใน Node.js เมื่อตรวจพบโหมดมืด ต้องทำอย่างไร

Node.js ไม่สามารถโทรไปยังโมดูลฝั่งไคลเอ็นต์ได้ เนื่องจากไม่มีความสัมพันธ์ระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ภายในแบบเดียวกับที่ JavaScript มี One-liner สำหรับการตรวจจับโหมดมืดในบทความนี้มีไว้สำหรับ JavaScript บนเบราว์เซอร์โดยเฉพาะ

3. รหัสนี้เป็นสากลสำหรับเบราว์เซอร์ทั้งหมดหรือไม่

โค้ด JavaScript ใช้ล่ามที่ควรจะทำงานในระดับสากล แม้ว่าในทางทฤษฎีจะทำงานได้กับทุกเบราว์เซอร์ แต่วิธีที่พวกเขาตีความโค้ดของคุณอาจแตกต่างกันเล็กน้อยโดยเฉพาะกับซอฟต์แวร์ที่เก่ามาก ในกรณีของบรรทัดเดียวทั้งหมดที่แสดงไว้ที่นี่ ทั้งหมดควรส่งคืนผลลัพธ์เดียวกันโดยไม่คำนึงถึงเบราว์เซอร์ที่ผู้ใช้ของคุณเรียกใช้โค้ด อย่างไรก็ตาม โปรดทราบว่าคุณลักษณะบางอย่างที่คุณใช้ใน JavaScript โดยทั่วไปอาจไม่ทำงานบนเบราว์เซอร์ เช่น Pale Moon, Internet Explorer หรือเบราว์เซอร์เวอร์ชันต้นปี 2000 ที่กำลังพัฒนาอยู่ในขณะนี้