از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه بررسی کنیم که آیا کلید در شی جاوا اسکریپت وجود دارد یا نه، شیء در جاوا اسکریپت مجموعه ای نامرتب از جفت های کلید-مقدار (کلید: مقدار) است. هر کلید به عنوان یک ویژگی شناخته می شود و رشته ای است که یک نام ویژگی را نشان می دهد. اگر یک غیر رشته به عنوان کلید داده شود، نمایش رشته ای آن استفاده خواهد شد. مقدار یک دارایی می تواند از هر داده ای باشد…
سرفصلهای مطلب
معرفی
یک شی در جاوا اسکریپت مجموعه ای نامرتب از ارزش کلیدی جفت (key: value
). هر یک کلید به عنوان a شناخته می شود ویژگی، و رشته ای است که یک نام ویژگی را نشان می دهد. اگر یک غیر رشته به عنوان کلید داده شود، نمایش رشته ای آن استفاده خواهد شد. یک ملک ارزش می تواند از هر نوع داده ای باشد که از نظر مفهومی با ویژگی مطابقت داشته باشد – یک رشته، یک عدد، یک آرایه یا حتی یک تابع.
یک آرایه، روی از سوی دیگر، مجموعه ای مرتب شده از مقادیر است. هر مقدار به عنوان یک عنصر نامیده می شود که با یک شاخص عددی مشخص می شود. یک آرایه می تواند تقریباً از هر نوع مقادیری را شامل شود. به عنوان مثال، میتواند مواردی مانند اعداد صحیح، رشتهها، بولیان، توابع و غیره را ذخیره کند. آرایههای جاوا اسکریپت نیز به یک نوع محدود نمیشوند، به این معنی که یک آرایه معین میتواند شامل چندین نوع مختلف در آن باشد.
هنگام کار در جاوا اسکریپت، ممکن است در یک نقطه خاص از زمان نیاز داشته باشید که تعیین کنید آیا یک کلید در یک شی یا آرایه مشخص وجود دارد یا خیر.
در این مقاله، روشهای مختلفی را مشاهده میکنیم که میتوانیم از آنها برای بررسی وجود یک کلید خاص در یک شی/آرایه جاوا اسکریپت استفاده کنیم.
با استفاده از که در اپراتور
را in
عملگر در جاوا اسکریپت برای تعیین اینکه آیا یک ویژگی خاص در یک شی یا ویژگی های ارثی آن (همچنین به عنوان زنجیره اولیه آن شناخته می شود) استفاده می شود. در صورت وجود اموال ارائه شده، in
اپراتور درست برمی گردد.
بررسی یک شی
let user = {
name: 'John Doe',
age: 17,
profession: 'Farmer'
};
// Check if key exists
'name' in user; // Returns true
'profession' in user; // Returns true
'Daniel' in user; // Returns false because no key like that exists
'Farmer' in user; // Returns false because 'Farmer' is not a key, but a value
بررسی یک آرایه
از آنجایی که ما نشان دادیم که جاوا اسکریپت in
عملگر را می توان با اشیاء استفاده کرد، ممکن است بپرسید که آیا می توان از آن با آرایه ها نیز استفاده کرد. در جاوا اسکریپت، همه چیز نمونه ای از نوع Object است (به جز موارد اولیه)، بنابراین آرایه ها نیز از in
اپراتور.
بیایید تأیید کنیم که آیا این یک نمونه از آن است Object
با استفاده از instanceof
اپراتور:
let numbers = (22, 3, 74, 35);
numbers instanceof Object // Returns true
اکنون به استفاده از in
اپراتور:
let numbers = (12, 33, 14, 45, 6);
// Checking if index 1 is present
1 in numbers; // Returns true
// Checking if index 3 is present
3 in numbers; // Returns true
8 in numbers; // Returns false because the 8 index does exist in the array
6 in numbers; // Returns false because the 6 index does not exist in the array
این نیز باز خواهد گشت true
برای خواص روش روی یک نوع آرایه که آرایه اعداد نمونه ای از آن است.
'map' in number; // Returns true because 'map' is a method attribute of the array type
با استفاده از hasOwnProperty() روش
در جاوا اسکریپت، hasOwnProperty()
تابع برای تعیین اینکه آیا شیء دارای ویژگی ارائه شده به عنوان ویژگی خود است یا خیر استفاده می شود. این برای تعیین اینکه آیا ویژگی توسط شی به ارث برده شده است یا خیر، مهم است.
بررسی یک شی
let user = {
name: 'John Doe',
age: 17,
profession: 'Farmer'
};
// Check if key exists
let hasKey = user.hasOwnProperty('name');
if (hasKey) {
console.log('This key exists.');
} else {
console.log('This key does not exist.');
}
بررسی یک آرایه
ممکن است به این فکر کنید که آیا این برای آرایه ها کار می کند یا خیر. همانطور که قبلاً مشخص کردیم، یک آرایه در واقع یک نمونه اولیه (نمونه) از آن است Object
نوع، بنابراین این روش را نیز در اختیار دارد.
let number = (12, 33, 14, 45);
// Check if key exists
number.hasOwnProperty(1); // Returns true
number.hasOwnProperty(0); // Returns true
number.hasOwnProperty(7); // Returns false because 7 is not an existing index روی the array
با استفاده از Object.key() روش
روش استاتیک Object.key
آرایهای را تولید و برمیگرداند که اجزای آن رشتههایی از نامها (کلیدهای) ویژگیهای یک شی هستند. این ممکن است برای حلقه زدن کلیدهای شی مورد استفاده قرار گیرد، که سپس میتوانیم برای بررسی اینکه آیا با کلید خاصی در شی مطابقت دارد یا خیر استفاده کنیم.
استفاده با مقداری() روش
some()
یک روش جاوا اسکریپت است که یک تابع تماس را آزمایش می کند روی تمام عناصر آرایه فراخوان و برمی گرداند true
اگر تابع تماس برگشتی برگردد true
برای هر از آنها
استفاده کردن مقداری() برای اشیاء
let user = {
name: 'John Doe',
age: 17,
profession: 'Farmer'
};
// Check if key exists
Object.keys(user).some(key => key === 'name'); // Returns true
Object.keys(user).some(key => key === 'role'); // Returns false
ما همچنین می توانیم این را به یک تابع قابل استفاده مجدد سفارشی کنیم:
const checkKey = (obj, keyName) => {
let keyExist = Object.keys(obj).some(key => key === keyName);
console.log(keyExist);
};
checkKey(user, 'name'); // Return true
استفاده کردن مقداری() برای یک آرایه
let number = (12, 33, 14, 45);
// Check if key exists
number.some(value => value === 1); // Returns true
number.some(value => value === 7); // Returns false
دوباره، درست مانند شی، میتوانیم از یک تابع قابل استفاده مجدد سفارشیشده مشابه برای بررسی وجود یک مقدار در یک آرایه استفاده کنیم:
const checkVal = (arr, val) => {
let valExist = arr.some(value => value === val);
console.log(valExist);
};
checkVal(number, 7); // Returns false
checkVal(number, 0); // Returns true
با استفاده از indexOf() روش
جاوا اسکریپت indexOf()
متد ایندکس the را برمی گرداند نمونه اول یک عنصر در آرایه اگر عنصر وجود نداشته باشد، -1 برگردانده می شود.
استفاده کردن indexOf() برای یک شی
را Object
تایپ در جاوا اسکریپت در واقع پشتیبانی نمی کند indexOf
روش، از آنجایی که خواص/کلیدهای آن ذاتاً موقعیتهای نمایهسازی شده در شیء ندارند. در عوض، میتوانیم کلیدهای شی را بهعنوان یک آرایه دریافت کنیم و سپس وجود یک کلید را با استفاده از the بررسی کنیم indexOf
روش:
let user = {
name: 'John Doe',
age: 17,
profession: 'Farmer'
};
// Check if key exists
Object.keys(user).indexOf('name') // Returns 0
Object.keys(user).indexOf('role') // Returns -1
به خاطر داشته باشید که اشیاء جاوا اسکریپت همیشه نظم کلید را حفظ نکنید، بنابراین شاخص بازگشتی ممکن است به اندازه آرایه ها معنادار نباشد. در این مورد، شاخص باید در درجه اول برای تعیین وجود یک کلید استفاده شود.
در اینجا مثالی از استفاده از آن در یک تابع ابزار آورده شده است:
const checkKey = (obj, keyName) => {
if (Object.keys(obj).indexOf(keyName) !== -1) {
console.log('This key exists');
} else {
console.log('This key does not exist');
}
};
checkKey(user, 'name'); // Logs 'This key exists'
checkKey(user, 'role'); // Logs 'This key does not exists'
استفاده کردن indexOf() برای یک آرایه
همانطور که در مثال قبلی دیدیم، آرایه ها از این پشتیبانی می کنند indexOf
روش، بر خلاف اشیاء. برای استفاده از آن، مقدار مورد مورد نظر خود را به آن ارسال کنید indexOf
، که در صورت وجود آن در آرایه، موقعیت آن مقدار را برمی گرداند:
let number = (12, 33, 14, 45);
// Find position of the item in the array
number.indexOf(14); // Returns 2
number.indexOf(7); // Returns -1
نتیجه
در این مقاله، همه راههای ممکن را دیدهایم که از طریق آنها میتوانیم بررسی کنیم که آیا یک کلید یا آیتم در یک شی/آرایه جاوا اسکریپت وجود دارد یا خیر. ما نشان می دهیم که چگونه از آن استفاده کنیم in
اپراتور، hasOwnProperty()
روش، و some
روش. ما همچنین دیدیم که چگونه اشیاء و آرایههای JS از این نظر مشابه هستند که آرایهها از اشیاء به ارث میبرند و بنابراین شامل بسیاری از روشهای مشابه هستند.
منتشر شده در 1403-01-11 17:49:04