دستور زبان تخریب - Destructuring Syntax

تخریب (destructuring) این امکان را می‌ دهد تا ویژگی‌ های یک شیء (object) را به عنوان متغیرهای مستقل استخراج کنید.

let {name, age} = person;

علاوه بر این می توان آرایه یا هر گونه تکرارشونده (iterables) دیگری را باز کرد.

let [name, age] = person;

تکرارشونده ها مانند:

  • اشیاء
  • آرایه ها
  • رشته ها
  • نقشه ها
  • ...

تخریب شیء - Object destructuring

// ساخت یک شیء
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;

تخریب رشته - String Destructuring

یکی از کاربرد های تخریب، باز کردن کاراکتر های رشته است.

// ساخت یک رشته
let name = "PNLdev";

// تخریب
let [c1, c2, c3, c4, c5, c6] = name;

نکته: ویژگی تخریب را می توان با هر گونه تکرارشونده ای استفاده کرد.

تخریب آرایه - Array Destructuring

با اسفاده از تخریب، می توان متغیر های آرایه را در متغیر های دلخواه خود، ذخیره کنیم:

// ساخت یک آرایه
const colors = ["قرمز", "آبی", "سبز", "زرد"];

// تخریب
let [color1, color2] = colors;

پرش از مقادیر آرایه

با اسفاده از تخریب، می توان با قرار دادن دو یا چند کاما (,) از مقادیر آرایه رد شویم:

// ساخت یک آرایه
const colors = ["قرمز", "آبی", "سبز", "زرد"];

// تخریب
let [color1,,, color2] = colors;

مقادیر موقعیت آرایه

با اسفاده از تخریب، می توان مقادیر مورد نظر را با استفاده از ایندکس های یک آرایه انتخاب کنیم:

// ساخت یک آرایه
const colors = ["قرمز", "آبی", "سبز", "زرد"];

// تخریب
let {[0]: color1, [3]: color2} = colors;

rest operator یا ... در جاوا اسکریپت

برای پایان دادن به عمل تخریب شما می توانید از rest operator استفاده کنید. این ویژگی تمام مقادیر باقی مانده را در خود ذخیره می کند.

// ساخت یک آرایه
const colors = ["قرمز", "آبی", "سبز", "زرد"];

// تخریب
let [color1, color2, ...rest] = colors;

نکته: می توان به جای استفاده از کلمه rest از کلمات دیگری استفاده کرد (مانند ...body)، توجه داشته باشید که نوع نوشتار این ویژگی مهم است.

تخریب نقشه - Map Destructuring

// ساخت یک آرایه
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];
توسعه دهندگان
نیما عراقی