38 کد یک-خطی جاوا اسکریپت که سرعت کدنویسی شما را 10x افزایش می دهد!

تکنیک های یک خطی جاوا اسکریپت

معمولا اکثر برنامه نویسان در حوزه وب تا به طور مکرر با جاوا اسکریپت سر و کار دارند و دانستن تکنیک ها و ترفند های مهم می‌تواند تا حد زیادی در زمانشان صرفه جویی کرده و کیفیت کد را افزایش دهد. در ادامه می‌توانید سرعت و مهارت های جاوا اسکریپت خود را با دانستن برخی از این تکنیک های قدرتمند و تک-خطی افزایش دهید:

یافتن بیشترین مقدار در یک آرایه

Math.max(...array)

حذف آیتم های تکراری آرایه

[...new Set(array)]

حذف آبجکت های تکراری آرایه

[...new Set(array.map(JSON.stringify))].map(JSON.parse)

تولید عدد رندم بین 1 تا 100

Math.floor(Math.random() * 100) + 1

بررسی اینکه مقدار رشته عددی است

/^-?[0-9]+$/.test(string)

دریافت تاریخ و زمان به فرمت استاندارد

new Date().toISOString()

بررسی آرایه بودن یک متغیر

Array.isArray(variable)

بررسی آبجکت بودن یک متغیر

typeof variable === "object"

کپی سطحی (shallow) یک آبجکت

object2 = { ...object }

کپی عمیق (deep) یک آبجکت

JSON.parse(JSON.stringify(object))

البته اخیرا structuredClone برای همین کار به جاوا اسکریپت اضافه شده است.

تبدیل یک آرایه به رشته

array.join(" - ")

بررسی تابع بودن یک متغیر

typeof variable === "function"

تبدیل مقادیر یک آبجکت به آرایه

Object.values(object)

شمارش تعداد تکرار یک مقدار در آرایه

array.filter(x => x === value).length

ایجاد یک آبجکت با مقدار و نام ویژگی پویا (dynamic)

{ [key]: value }

بررسی اینکه یک رشته با برعکسش برابر است

string === string.split("").reverse().join("")

محاسبه میانگین اعداد داخل یک آرایه

array.reduce((a, b) => a + b, 0) / array.length

دریافت تاریخ و زمان فعلی به علاوه N ثانیه

new Date(Date.now() + secondsFromNow * 1000)

تبدیل تاریخ و زمان به فرمت محلی

new Date().toLocaleString('fa-IR', { dateStyle: "medium" })

بررسی اینکه یک مقدار null است

variable === null

بررسی اینکه یک مقدار تعریف نشده است (بدون خطا)

typeof variable === "undefined"

یافتن کوچکترین عدد در یک آرایه

Math.min(...array)

بررسی خالی بودن یک آرایه

array.length === 0

تولید یک آرایه با رنج مشخصی از اعداد

Array.from({ length: n }, (_, i) => i)

کپی سطحی (shallow) یک آرایه

array2 = [...array]

دسترسی به آیتم های آرایه از آخر

lastItem = array.at(-1)

مرتب سازی و کپی به آرایه جدید بدون تغییر آرایه اصلی

array.toSorted((a, b) => a - b)

حلقه روی مقادیر و کلید های یک آبجکت به صورت همزمان

Object.entries(object).forEach([key, value] => {})

تبدیل یک آرایه دو بعدی به آبجکت

Object.fromEntries([ ['k1', 'v1'], ['k2', 'v2'] ])

دسترسی به ویژگی های آبجکتی که ممکن است تعریف نشده باشد (بدون خطا)

object?.foo?.bar?.someFn?.()

تعیین مقدار پیشفرض در صورت null یا undefined بودن

object.myName ?? 'Reza'

بررسی اینکه داخل صفحه داخل آی‌فریم است

window.self !== window.parent

جایگزین کردن نام و مقدار ویژگی های یک آبجکت با یکدیگر

Object.keys(obj).reduce((o, k) => ({ ...o, [obj[k]]: k }), {})

فرمت کردن یک عدد به فرمت قیمت (هر سه رقم یک کاما)

`${number}`.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,')

استخراج متن از یک رشته حاوی HTML

htmlString.replace(/(<([^>]+)>)/ig, ' ')

محدودسازی طول رشته به N کاراکتر

str.slice(0, limit) + (str.length > limit ? "…" : "")

تبدیل رشته به هش md5 در نود

require("crypto").createHash("md5").update(str).digest("hex")

رندم کردن ترتیب آیتم های آرایه

array.map(i => [i, Math.random()]).sort((a, b) => a[1] - b[1]).map(i => i[0])

کامنت ها