از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
جاوا اسکریپت: بررسی کنید که آیا Object Array است یا خیر. کار با آرایه ها در جاوا اسکریپت یک فعالیت معمول است. گاهی اوقات متغیری در جاوا اسکریپت دریافت می کنیم که باید یک آرایه باشد، اما مطمئن نیستیم که باشد. انواع داده های غیر ابتدایی در جاوا اسکریپت همه اشیا هستند (توابع نوع خاص خود را دارند، اما آنها نیز شی هستند). به عنوان یک …
سرفصلهای مطلب
معرفی
کار با آرایه ها در جاوا اسکریپت یک فعالیت رایج است. گاهی اوقات متغیری در جاوا اسکریپت دریافت می کنیم که باید یک آرایه باشد، اما مطمئن نیستیم که باشد.
انواع داده های غیر ابتدایی در جاوا اسکریپت همه اشیا هستند (توابع نوع خاص خود را دارند، اما آنها نیز شی هستند). در نتیجه، استفاده از آن کافی نیست typeof
عملگر که معمولاً برای تعیین نوع داده استفاده می شود:
let result = { subject: 'Science', marks: 97 };
let numbers = (1, 2, 3, 4, 5);
console.log(typeof result); // Object
console.log(typeof numbers); // Object
در این مقاله، روش بررسی اینکه آیا یک متغیر یا مقدار داده شده یک آرایه است یا نه، در جاوا اسکریپت را بررسی خواهیم کرد.
با استفاده از Array.isArray() روش
همانطور که از نام آن پیداست، از این روش می توان برای تشخیص آرایه بودن یا نبودن آرگومان داده شده استفاده کرد. یک بولی برمی گرداند (true
/false
) ارزش با نتیجه.
برای مثال با متغیرهای زیر the Array.isArray()
روش به درستی تعیین می کند که آیا آنها یکی هستند یا نه:
let result = { subject: "Science", marks: 97 }; // Object
let numbers = (1, 2, 3, 4, 5); // Array
let name = "Mark"; // String
let names = new Array("Jill", "Jane", "Jacqueline");
console.log(Array.isArray(result)); // false
console.log(Array.isArray(numbers)); // true
console.log(Array.isArray(name)); // false
console.log(Array.isArray(names)); // true
استفاده از یک شی سازنده ویژگی
هر شی دارای یک constructor
ویژگی (به جز اشیاء ایجاد شده با Object.create(null)
، یک اتفاق بعید است). میتوانیم ویژگی سازنده را مستقیماً با جاوا اسکریپت مقایسه کنیم توابع سازنده. بنابراین، اگر آن را با تابع سازنده آرایه مقایسه کنیم، متوجه خواهیم شد که آیا آرایه است یا خیر.
توجه داشته باشید: تابع سازنده تابعی است که یک شی را مقداردهی اولیه می کند. اگر یک شی با استفاده از new
کلمه کلیدی، شما این کار را با یک تابع سازنده انجام دادید. به عنوان مثال، در let myArray = new Array(1, 2)
تابع سازنده استفاده شده است Array()
.
برای تعیین اینکه آیا یک متغیر آرایه است یا خیر، می توانید از ویژگی سازنده استفاده کنید:
let result = { subject: "Science", marks: 97 };
let numbers = (1, 2, 3, 4, 5);
let name = "Mark";
let names = new Array("Jill", "Jane", "Jacqueline");
console.log(result.constructor === Array); // false
console.log(numbers.constructor === Array); // true
console.log(name.constructor === Array); // false
console.log(names.constructor === Array); // true
با استفاده از به عنوان مثال از اپراتور
را instanceof
اپراتور بررسی می کند که آیا یک تابع سازنده در زنجیره نمونه اولیه یک شی پیدا شده است یا خیر. اگر کمتر با وراثت نمونه اولیه جاوا اسکریپت آشنایی دارید، اپراتور بررسی می کند که آیا یک شی توسط یک کلاس ایجاد شده است یا خیر، و اگر نه، بررسی می کند که آیا شی از آن کلاس مشتق شده است یا خیر.
مانند typeof
عملگر، یک مقدار بولی برمی گرداند. برای تعیین اینکه آیا یک متغیر یک آرایه است، می توانیم استفاده کنیم instanceof
مثل این:
let result = { subject: "Science", marks: 97 };
let numbers = (1, 2, 3, 4, 5);
let name = "Mark";
let names = new Array("Jill", "Jane", "Jacqueline");
console.log(result instanceof Array); // false
console.log(numbers instanceof Array); // true
console.log(name instanceof Array); // false
console.log(names instanceof Array); // true
با استفاده از Object.prototype.call() روش
تمام اشیاء در جاوا اسکریپت از شی نمونه اصلی که به درستی نامگذاری شده است، خصوصیات را به ارث می برند Object.prototype
. آ toString()
روش وجود دارد در Object.prototype
، به همین دلیل است که هر شی دارای یک toString()
روش خودشان را toString()
روش از Object.prototype
نوع یک شی را نشان می دهد.
را call()
متد اشیا یک تابع را اجرا می کند اما مقدار آن را تغییر می دهد this
به شی ای که در آرگومان هایش ارسال می شود، یعنی به یک شی اجازه می دهد تا از متدی از یک شی دیگر استفاده کند.
بنابراین می توانیم استفاده کنیم Object.prototype.toString()
به print نوع و سپس استفاده کنید call()
بنابراین برای یک شی دیگر انجام می شود. سپس آن مقدار رشته را با هم مقایسه می کنیم تا مشخص کنیم آیا یک آرایه است یا خیر:
let result = { subject: "Science", marks: 97 };
let numbers = (1, 2, 3, 4, 5);
let name = "Mark";
let names = new Array("Jill", "Jane", "Jacqueline");
console.log(Object.prototype.toString.call(result)); // (object Object)
console.log(Object.prototype.toString.call(numbers)); // (object Array)
console.log(Object.prototype.toString.call(name)); // (object String)
console.log(Object.prototype.toString.call(names)); // (object Array)
console.log(Object.prototype.toString.call(result) === "(object Array)"); // false
console.log(Object.prototype.toString.call(numbers) === "(object Array)"); // true
console.log(Object.prototype.toString.call(name) === "(object Array)"); // false
console.log(Object.prototype.toString.call(names) === "(object Array)"); // true
بعید است که از این روش استفاده کنید، اما دانستن بیشتر در مورد اشیاء جاوا اسکریپت هرگز ضرری ندارد!
نتیجه
در این مقاله، ما به چند روش در جاوا اسکریپت نگاه کردیم تا بفهمیم آیا یک شی یک آرایه است یا خیر. ساده ترین روش این است Array.isArray()
روشی که به احتمال زیاد در تولید استفاده خواهد شد.
با این حال، ما همیشه میتوانیم از آن استفاده کنیم instanceof
عملگر و سایر خصوصیات شی برای تعیین اینکه آیا آرایه است یا خیر.
منتشر شده در 1403-01-18 01:44:04