از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
جاوا اسکریپت: بررسی کنید که آیا یک شی EmptyObjects برای ذخیره مجموعه ای از ویژگی ها استفاده می شود، که هر کدام ممکن است به عنوان ارتباطی بین یک نام (یا کلید) و یک مقدار (مجموعه ای از جفت های کلید-مقدار) در نظر گرفته شوند. در این راهنما، بسیاری از روش های جاوا اسکریپت را بررسی خواهیم کرد روی چگونه بررسی کنیم که آیا یک شی خالی است ….
سرفصلهای مطلب
معرفی
اشیاء برای ذخیره مجموعه ای از ویژگی ها استفاده می شوند، که هر کدام ممکن است به عنوان ارتباطی بین یک نام (یا کلید) و الف ارزش (مجموعه ای از ارزش کلیدی جفت).
در این راهنما، بسیاری از روش های جاوا اسکریپت را بررسی خواهیم کرد روی روش بررسی خالی بودن یک شی ما از Vanilla JavaScript و همچنین کتابخانه های رایج مانند لوداش و زیرخط.
وقتی صحبت از برنامه های کوچکی می شود که به وابستگی های خارجی نیاز ندارند – بررسی خالی بودن یک شی بهتر است با جاوا اسکریپت خالص انجام شود. با این حال، اگر برنامه شما قبلاً دارای کتابخانه های خارجی مانند لوداش و زیرخط – آنها راه های عالی برای انجام این بررسی ها نیز ارائه می دهند.
بررسی خالی بودن یا نبودن یک شی یک عملیات اساسی و مکرر است، با این حال، روش های مختلفی برای تعیین خالی بودن یا نبودن آن وجود دارد.
بیایید با ایجاد یک Object خالی با نحو لغوی شی شروع کنیم:
const emptyObject = {}
با استفاده از Object.keys() روش
Object.keys()
یک متد استاتیک است که وقتی یک شی را به آن ارسال می کنیم، یک آرایه را برمی گرداند، که شامل نام های ویژگی (کلیدها) متعلق به آن شی است. ما می توانیم بررسی کنیم که آیا length
از این آرایه است 0
یا بالاتر – نشان می دهد که آیا هیچ کلیدی وجود دارد یا خیر. اگر هیچ کلیدی وجود نداشته باشد، شی خالی است:
Object.keys(obj).length === 0 && obj.constructor === Object;
توجه داشته باشید: بررسی سازنده مطمئن می شود که آرگومان ارسال شده در واقع یک شی است.
اگر چندین بار در پروژه از چک استفاده میکنید، میتوانیم یک تابع قابل استفاده مجدد ایجاد کنیم:
const isEmptyObject = (obj) => {
return Object.keys(obj).length === 0 && obj.constructor === Object;
}
console.log(isEmptyObject(emptyObject)); // true
این تا حد زیادی ساده ترین روش برای تعیین خالی بودن یک شی است، اگرچه کمی پرمخاطب است. ما این پرحرفی را با رویکردهای زیر حذف خواهیم کرد – پس از اینکه نگاهی به آن انداختیم Object.values()
و Object.entries()
روشهای استاتیک، که میتوانند به همان روشی استفاده شوند Object.keys()
.
با استفاده از Object.values() روش
درست مانند کلیدها – اگر یک شی فاقد آن باشد values
مرتبط (حتی یک undefined
/null
) – خالی است:
const isEmptyObject = (obj) => {
return Object.values(obj).length === 0 && obj.constructor === Object;
}
console.log(isEmptyObject(emptyObject)); // true
با استفاده از Object.entries() روش
این entries()
متد تمام جفتهای کلید-مقدار (ورودیها) را نشان میدهد که میتوانند به عنوان یک پوشش برای هر دو رویکرد بالا استفاده شوند:
const isEmptyObject = (obj) => {
return Object.entries(obj).length === 0 && obj.constructor === Object;
}
console.log(isEmptyObject(emptyObject)); // true
برای … در و hasOwnProperty()
برای مرورگرهایی که پشتیبانی نمی کنند keys()
، values()
و entries()
متدها – می توانید به صراحت از طریق ویژگی ها حلقه بزنید! شما می توانید این منطق را در متدی که برمی گرداند قرار دهید true
اگر هیچ خاصیتی پیدا نشد، و false
اگر خواص پیدا شد:
const isEmptyObject = (objectName) => {
for (var prop in objectName) {
if (objectName.hasOwnProperty(prop)) {
return false;
}
}
return true;
}
console.log(isEmptyObject(emptyObject)); // true
با استفاده از JSON.stringify
این یکی از ساده ترین روش ها برای استفاده است. زمانی که ما رشته کردن یک شی و خروجی فقط یک براکت باز و بسته است، می دانیم که آیتم خالی است:
JSON.stringify(objectName) === '{}';
ما همچنین می توانیم به راحتی در یک تابع پیچیده شویم:
const isEmptyObject = (objectName) => {
return JSON.stringify(objectName) === '{}';
}
console.log(isEmptyObject(emptyObject)); // true
بررسی کنید که آیا شیء با کتابخانه های جاوا اسکریپت خالی است یا خیر
کتابخانهها به ما کمک میکنند تا به جای نوشتن راهحلهای خود، کد را سریعتر بنویسیم، با ترکیب قابلیتهای پیشرفته، که توسط توسعهدهندگان بیشماری دیگر استفاده میشود.
کتابخانهها معمولاً سریع/بهینهسازی شدهاند و برخی از آنها به دلیل مفید بودن در بسیاری از پروژهها وجود دارند. چندین مورد از آنها را نیز می توان برای بررسی خالی بودن یا نبودن یک شی مورد استفاده قرار داد. اکثر آنها سازگاری عالی را برای مرورگرهای قدیمی ارائه می دهند.
با استفاده از Underscore و Lodash
هر دو لوداش و زیرخط کتابخانه های ابزاری هستند که کمی از ابزارهای معمولی را ارائه می دهند. هر دوی آنها معمولاً به عنوان واردات هستند _
، و می تواند از طریق CDN وارد شود:
<script src="https://cdn.jsdelivr.net/npm/(email protected)/lodash.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/(email protected)/underscore-umd-min.js"></script>
یا یک مدیر بسته مانند NPM را نصب کرده و سپس از طریق آن وارد شده است require()
نحو:
$ npm install lodash
$ npm install underscore
const _ = require('lodash');
const _ = require('underscore');
هر دو کتابخانه دقیقاً دستور یکسانی برای بررسی خالی بودن یک شی دارند:
_.isEmpty();
این تابع با هر ساختار داده ای کار می کند – لیست ها، آرایه ها، رشته ها، اشیاء و غیره. true
یا false
:
_.isEmpty(emptyObject); // true
جی کوئری
جی کوئری یک کتابخانه محبوب جاوا اسکریپت است که در بسیاری از پروژه ها در سراسر جهان وجود دارد. به دلیل وزن سبک و ویژگیهایی که دامنه قابلیتهای داخلی جاوا اسکریپت را گسترش میدهد – به یک جزء اصلی تبدیل شده است.
jQuery را می توان از طریق CDN وارد کرد:
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
یا یک مدیر بسته مانند NPM را نصب کرده و سپس از طریق آن وارد شده است require()
نحو:
$ npm install jquery
معمولاً به عنوان وارد می شود $
:
const $ = require('jquery');
به طور طبیعی، می توانید از آن برای بررسی خالی بودن یا نبودن یک شی استفاده کنید:
$.isEmptyObject(emptyObject); // true
رامدا
رامدا هست یک کاربردی کتابخانه جاوا اسکریپت! هرگز داده ها را تغییر نمی دهد و از ایجاد خطوط لوله صرفاً کاربردی پشتیبانی می کند. برای کسانی که پس زمینه برنامه نویسی کاربردی تری دارند – این یک کتابخانه عالی است که با آن احساس راحتی کنید.
Ramda را می توان از طریق CDN وارد کرد:
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.28.0/ramda.min.js"></script>
یا یک مدیر بسته مانند NPM را نصب کرده و سپس از طریق آن وارد شده است require()
نحو:
$ npm install ramda
معمولاً به عنوان وارد می شود R
:
const R = require('ramda');
اگر قبلاً از آن استفاده می کنید – یک پیشنهاد می دهد isEmpty()
عملکرد نیز:
R.isEmpty(emptyObject); // true
هوک
@hapi/hoek بخشی از است اکوسیستم هاپیو یک کتابخانه روش ابزار محبوب برای برنامه های مبتنی بر hapi. الف را ارائه می دهد deepEqual()
روش، که بررسی می کند که آیا دو شیء یکسان هستند (از نظر عمق):
Hoek.deepEqual({}, emptyObject); // true
نتیجه
در این مقاله نگاهی به روش بررسی خالی بودن یا نبودن یک شی در جاوا اسکریپت انداخته ایم. برای این منظور – ما از چندین رویکرد Vanilla JS، jQuery، Underscore، Lodash، Ramda، Hoek و ماژول JSON استفاده کردهایم.
منتشر شده در 1403-01-12 06:29:03