CyrefJS
CCyrefJS
EN
بازگشت به مستندات
آبجکت/از نسخه 1.38.0

invert

یک شیء جدید ایجاد می‌کند که در آن مقادیر شیء اصلی به کلید و کلیدهای شیء اصلی به مقدار تبدیل می‌شوند.

invert(object):Record<string, keyof T>

نحوه عملکرد

این تابع روی ویژگی‌های رشته‌ای، قابل‌شمارش و مستقیم شیء پیمایش می‌کند. برای هر ویژگی، مقدار آن به رشته تبدیل شده و به‌عنوان کلید در شیء جدید قرار می‌گیرد و کلید اصلی به مقدار تبدیل می‌شود.

مقادیر تکراری

اگر چند ویژگی پس از تبدیل مقدار به رشته، مقدار یکسانی داشته باشند، ویژگی بعدی مقدار قبلی را overwrite می‌کند؛ چون نتیجه برای آن مقدار فقط یک کلید دارد.

ویژگی‌های قابل شمارش

این implementation از Object.keys استفاده می‌کند، بنابراین فقط ویژگی‌های مستقیم، قابل‌شمارش و دارای کلید رشته‌ای وارد نتیجه می‌شوند. ویژگی‌های inherited و کلیدهای Symbol نادیده گرفته می‌شوند.

پارامترها

objectTالزامی

شیئی که کلیدها و مقادیر آن باید معکوس شوند.

مقدار بازگشتی

Record<string, keyof T>

یک شیء جدید که کلیدهای آن مقادیر تبدیل‌شده به رشته از شیء اصلی و مقادیر آن کلیدهای شیء اصلی هستند.

مثال‌ها

01

استفاده پایه

TypeScript
const roles = {
  admin: "administrator",
  user: "member",
};

invert(roles);
// {
//   administrator: "admin",
//   member: "user",
// }
02

مقادیر عددی

TypeScript
const status = {
  pending: 1,
  success: 2,
  failed: 3,
};

invert(status);
// {
//   "1": "pending",
//   "2": "success",
//   "3": "failed",
// }
03

مقادیر boolean

TypeScript
const flags = {
  enabled: true,
  disabled: false,
};

invert(flags);
// {
//   "true": "enabled",
//   "false": "disabled",
// }
04

مقادیر تکراری

TypeScript
const roles = {
  admin: "user",
  member: "user",
};

invert(roles);
// {
//   user: "member",
// }
05

مقادیر به رشته تبدیل می‌شوند

TypeScript
const data = {
  first: 10,
  second: 20,
};

invert(data);
// {
//   "10": "first",
//   "20": "second",
// }
06

شیء خالی

TypeScript
invert({});
// {}
07

شیء اصلی تغییر نمی‌کند

TypeScript
const data = {
  first: "one",
  second: "two",
};

const result = invert(data);

console.log(data);
// {
//   first: "one",
//   second: "two",
// }
ساخته شده با@cyref/js·مستندات رسمی