مقدمه
در بسیاری از پروژههای جاوااسکریپت لازم است عناصر یک کالکشن (آرایه، شیء یا Map) را پیمایش کنیم.
سه متد keys، values و entries به شما اجازه میدهند
بهترتیب به کلیدها، مقدارها یا
جفتهای کلید-مقدار یک کالکشن دسترسی داشته باشید. در این درس با کاربرد این متدها در انواع ساختار
داده
(آرایه، Map و شیء) و نکات مهم استفاده آنها آشنا میشوید.
متدهای keys، values و entries برای آرایهها
متدهای keys، values و entries به شما امکان میدهند به
راحتی به عناصر آرایه دسترسی پیدا کنید و آنها را پیمایش کنید.
در ادامه نحوهی استفاده از هر یک از این متدها روی آرایهها را میبینیم.
متد keys برای آرایه
متد keys روی آرایه یک تکرارگر یا Iterator از اندیسها برمیگرداند. این تکرارگر یا
Iterator را میتوانید با حلقه
for...of یا متد next() پیمایش کنید:
JAVASCRIPT
let arr = ["a", "b", "c"];
for (let key of arr.keys()) {
console.log(key);
}
متد values برای آرایه
متد values مقدار هر عنصر آرایه را به ترتیب باز میگرداند. این متد برای پیمایش مستقیم
عناصر بسیار مفید است:
JAVASCRIPT
for (let val of arr.values()) {
console.log(val);
}
متد entries برای آرایه
متد entries برای هر عنصر آرایه یک آرایه شامل اندیس و مقدار (جفت) باز میگرداند. این متد
زمانی مفید است که همزمان به اندیس و مقدار نیاز دارید.
JAVASCRIPT
for (let [idx, val] of arr.entries()) {
console.log(idx, val);
}
متدهای keys، values و entries برای Map و Set
نوع Map به طور پیشفرض از همین سه متد برای پیمایش کلیدها، مقدارها و جفت کلید-مقدار
پشتیبانی میکند. همانطور که گفتیم، این متدها Iteratable هستند و خروجی آنها برای استفاده در
حلقهها و الگوریتمهای
دادهای فوقالعاده کاربردی است.
JAVASCRIPT
let m = new Map([
["a", 1], ["b", 2]
]);
for (let key of m.keys()) { ... }
for (let val of m.values()) { ... }
for (let [k, v] of m.entries()) { ... }
اما در مورد Set اوضاع کمی متفاوت است، چون در Set ما فقط مفادیر منفرد داریم نه
جفتهای کلید - مقدار و به عبارت دیگر، بر خلاف Map که جفتهای key: value را نگه میدارد،
در Set فقط value نگه داشته میشود. بنابراین، هر دو متد keys و values در Set یکسان
عمل میکنند و فقط مقادیر را بازمیگردانند.
به متد entries هم که ظاهراً نیازی نیست اما با این وجود برای اینکه عملکرد این متد روی
Set هم مشابه Map باشد، متد entries روی یک Set باعث برگشتن یک تکرارگر یا Iterator میشود که هر
مقدار را به صورت value: value برمیگرداند.
مثال زیر این موضوع را کاملاً روشن میکند.
let s = new Set([1, 2, 3]);
for (let val of s.entries()) {
console.log(val);
}
در این مثال، متد entries روی Set یک تکرارگر برمیگرداند که هر مقدار را به صورت [value, value]
بازمیگرداند.
استفاده از Object.keys، Object.values و Object.entries
برای شیءهای معمولی (Object)، سه متد Object.keys، Object.values و
Object.entries موجود است که آرایهای از کلیدها، مقدارها یا جفت کلید-مقدار را
بازمیگردانند. این متدها پیمایش شیءها را بسیار آسان و انعطافپذیر میکنند.
JAVASCRIPT
let obj = { a: 1, b: 2 };
console.log(Object.keys(obj));
console.log(Object.values(obj));
console.log(Object.entries(obj));
متدهای keys، values و entries ابزاری استاندارد برای پیمایش و پردازش انواع
کالکشنها در جاوااسکریپت هستند. تسلط بر این متدها کار با دادههای پیچیده را ساده و حرفهای
میکند و پایه بسیاری از الگوهای پیشرفته جاوااسکریپت است.