ما آبجکت ها و آرایه ها رو داشتیم اما در اکمااسکریپت6 دو نوع ساختمان داده جدید معرفی شدن به اسم های Map و Set که یه جورایی به آبجکت ها و آرایه قدرت می بخشن اما دو نوع داده کاملا متفاوت هستن.
در قسمت اول به Map می پردازیم:
مپ مجموعه ای از جفت های "کلید-مقدار" است اما تفاوت اصلیش با آبجکت ها این هست که مقادیری که به عنوان کلید استفاده می شوند می توانند از هر نوع داده ای باشند.
شما می توانید در ابتدا یک مپ خالی ایجاد کنید و یا بر اساس یک آبجکت آن را بسازید:
//Empty Map let map = new Map(); //Map From An Object let obj = { prop1:1, prop2:2, }; let mapFromObj = new Map(Object.entries(obj));
جفت کلید مقدار جدیدی اضافه می کند.این متد مپ را بعد از اضافه کردن جفت کلید مقدار بر می گرداند.
مقدار نظیر با کلید داده شده را بر می گرداند و اگر همچین کلیدی وجود نداشت undefined بر می گرداند.
اگر کلید موردنظر وجود داشت true برمی گرداند و در غیر این صورت false.
مقدار متناظر با کلید مورد نظر را حذف می کند.
مپ را کاملا خالی می کند.
این پراپرتی تعداد جفت های کلید مقدار درون مپ را برمی گرداند.
این داده ساختار در حلقه for of قابل استفاده است:
let map = new Map(); map.set("prop1",1); map.set("prop2",2); map.set("prop3",3); map.set("prop4",4); for (let pair of map) { console.log(pair); }
خروجی:
همچنین مپ یک متد forEach مشابه آرایه ها دارد:
let map = new Map(); map.set("prop1",1); map.set("prop2",2); map.set("prop3",3); map.set("prop4",4); map.forEach((value,key,map) => { console.log( `${key} : ${value}` ); })
خروجی:
let map = new Map(); map.set("prop1",1); map.set("prop2",2); map.set("prop3",3); map.set("prop4",4); let obj = Object.fromEntries(map); console.log(obj);
خروجی:
در این مثال می خوایم یک آرایه و دو مپ رو با هم ادغام کنیم و یک مپ جدید بسازیم:
const firstMap = new Map(); firstMap.set("prop1",1); firstMap.set("prop2",2); const secondMap = new Map(); secondMap.set("prop3",3); secondMap.set("prop4",4); const thirdMap = new Map([...firstMap,...secondMap,["prop5",5]]); console.log(thirdMap);
خروجی:
امیدوارم لذت برده باشید. انشاالله در قسمت بعد به Set خواهیم پرداخت.
منابع و مراجع: