دستور زبان تخریب
تخریب (destructuring) این امکان را می دهد تا ویژگی های یک شیء (object) را به عنوان متغیرهای مستقل استخراج کنید.
let {name, age} = person;
علاوه بر این می توان آرایه یا هر گونه تکرارشونده (iterables) دیگری را باز کرد.
let [name, age] = person;
تکرارشونده ها مانند:
- اشیاء
- آرایه ها
- رشته ها
- نقشه ها
- ...
تخریب شیء
// ساخت یک شیء
const person = {
name: "Nima",
age: 19
};
// تخریب
let {name, age} = person;
ترتیب ویژگی ها اهمیتی ندارد.
// ساخت یک شیء
const person = {
name: "Nima",
age: 19
};
// تخریب
let {age, name} = person;
نکته: تخریب (destructuring) در واقع مخرب نیست. یعنی، شیء اصلی کاملاً بی تغییر باقی می ماند.
مقادیر پیش فرض شیء
برای ویژگی هایی که ممکن است وجود نداشته باشند می توان مقدار پیش فرض تعیین کرد.
// ساخت یک شیء
const person = {
name: "Nima",
age: 19
};
// تخریب
let {name, family = "araghi", age} = person;
نام مستعار ویژگی شیء
// ساخت یک شیء
const person = {
name: "Nima",
age: 19
};
// تخریب
let {name : firstName} = person;
تخریب رشته
یکی از کاربرد های تخریب، باز کردن کاراکتر های رشته است.
// ساخت یک رشته
let name = "PNLdev";
// تخریب
let [c1, c2, c3, c4, c5, c6] = name;
نکته: ویژگی تخریب را می توان با هر گونه تکرارشونده ای استفاده کرد.
تخریب آرایه
با اسفاده از تخریب، می توان متغیر های آرایه را در متغیر های دلخواه خود، ذخیره کنیم:
// ساخت یک آرایه
const colors = ["قرمز", "آبی", "سبز", "زرد"];
// تخریب
let [color1, color2] = colors;
پرش از مقادیر آرایه
با اسفاده از تخریب، می توان با قرار دادن دو یا چند کاما (,) از مقادیر آرایه رد شویم:
// ساخت یک آرایه
const colors = ["قرمز", "آبی", "سبز", "زرد"];
// تخریب
let [color1,,, color2] = colors;
مقادیر موقعیت آرایه
با اسفاده از تخریب، می توان مقادیر مورد نظر را با استفاده از ایندکس های یک آرایه انتخاب کنیم:
// ساخت یک آرایه
const colors = ["قرمز", "آبی", "سبز", "زرد"];
// تخریب
let {[0]: color1, [3]: color2} = colors;
ویژگی باقی (rest)
برای پایان دادن به عمل تخریب شما می توانید از ویژگی باقی (rest) استفاده کنید. این ویژگی تمام مقادیر باقی مانده را در خود ذخیره می کند.
// ساخت یک آرایه
const colors = ["قرمز", "آبی", "سبز", "زرد"];
// تخریب
let [color1, color2, ...rest] = colors;
نکته: می توان به جای استفاده از کلمه rest از کلمات دیگری استفاده کرد، توجه داشته باشید که نوع نوشتار این ویژگی مهم است. (...body)
تخریت نقشه ها (maps)
// ساخت یک آرایه
const countries = new Map([
["ایران", "تهران"],
["ژاپن", "توکیو"],
["آلمان", "برلین"]
]);
// تخریب
let text = "";
for (const [country, capital] of countries) {
text += country + ": " + capital + "";
};
تعویض متغیر ها
let name = "Nima";
let family = "Araghi";
// تخریب
[name, family] = [family, name];
خلاصه درس