1.38.0invert
یک شیء جدید ایجاد میکند که در آن مقادیر شیء اصلی به کلید و کلیدهای شیء اصلی به مقدار تبدیل میشوند.
invert(object):Record<string, keyof T>نحوه عملکرد
این تابع روی ویژگیهای رشتهای، قابلشمارش و مستقیم شیء پیمایش میکند. برای هر ویژگی، مقدار آن به رشته تبدیل شده و بهعنوان کلید در شیء جدید قرار میگیرد و کلید اصلی به مقدار تبدیل میشود.
مقادیر تکراری
اگر چند ویژگی پس از تبدیل مقدار به رشته، مقدار یکسانی داشته باشند، ویژگی بعدی مقدار قبلی را overwrite میکند؛ چون نتیجه برای آن مقدار فقط یک کلید دارد.
ویژگیهای قابل شمارش
این implementation از Object.keys استفاده میکند، بنابراین فقط ویژگیهای مستقیم، قابلشمارش و دارای کلید رشتهای وارد نتیجه میشوند. ویژگیهای inherited و کلیدهای Symbol نادیده گرفته میشوند.
پارامترها
objectTالزامیشیئی که کلیدها و مقادیر آن باید معکوس شوند.
مقدار بازگشتی
Record<string, keyof T>یک شیء جدید که کلیدهای آن مقادیر تبدیلشده به رشته از شیء اصلی و مقادیر آن کلیدهای شیء اصلی هستند.
مثالها
استفاده پایه
const roles = {
admin: "administrator",
user: "member",
};
invert(roles);
// {
// administrator: "admin",
// member: "user",
// }مقادیر عددی
const status = {
pending: 1,
success: 2,
failed: 3,
};
invert(status);
// {
// "1": "pending",
// "2": "success",
// "3": "failed",
// }مقادیر boolean
const flags = {
enabled: true,
disabled: false,
};
invert(flags);
// {
// "true": "enabled",
// "false": "disabled",
// }مقادیر تکراری
const roles = {
admin: "user",
member: "user",
};
invert(roles);
// {
// user: "member",
// }مقادیر به رشته تبدیل میشوند
const data = {
first: 10,
second: 20,
};
invert(data);
// {
// "10": "first",
// "20": "second",
// }شیء خالی
invert({});
// {}شیء اصلی تغییر نمیکند
const data = {
first: "one",
second: "two",
};
const result = invert(data);
console.log(data);
// {
// first: "one",
// second: "two",
// }