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

pick

یک شیء جدید شامل فقط ویژگی‌های مشخص‌شده‌ای ایجاد می‌کند که در شیء یا زنجیره prototype آن وجود دارند.

pick(object, keys):Pick<T, K>

نحوه عملکرد

این تابع یک شیء جدید ایجاد می‌کند و هر کلید درخواست‌شده را با عملگر in بررسی می‌کند. اگر کلید در خود شیء یا هر جایی از زنجیره prototype وجود داشته باشد، مقدار فعلی آن در نتیجه قرار می‌گیرد.

زنجیره prototype

برخلاف بررسی با hasOwnProperty، عملگر in ویژگی‌های inherited را نیز در نظر می‌گیرد. بنابراین یک ویژگی inherited می‌تواند وارد شیء خروجی شود.

کپی سطحی

مقادیر انتخاب‌شده به‌صورت reference کپی می‌شوند. اشیای تو در تو و آرایه‌ها clone نمی‌شوند.

شیء اصلی

این تابع یک شیء نتیجه جداگانه ایجاد می‌کند و مستقیماً شیء ورودی را تغییر نمی‌دهد.

پارامترها

objectTالزامی

شیئی که باید ویژگی‌ها از آن انتخاب شوند.

keysK[]الزامی

آرایه‌ای از کلیدهایی که باید در شیء خروجی قرار بگیرند.

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

Pick<T, K>

یک شیء جدید شامل ویژگی‌های درخواست‌شده‌ای که در شیء یا زنجیره prototype آن وجود دارند.

مثال‌ها

01

استفاده پایه

TypeScript
const user = {
  name: "Amir",
  age: 22,
  role: "developer",
};

pick(user, ["name", "age"]);
// {
//   name: "Amir",
//   age: 22,
// }
02

انتخاب یک ویژگی

TypeScript
const user = {
  name: "Amir",
  age: 22,
};

pick(user, ["name"]);
// {
//   name: "Amir",
// }
03

انتخاب چند ویژگی

TypeScript
const user = {
  name: "Amir",
  age: 22,
  email: "amir@example.com",
};

pick(user, ["name", "email"]);
// {
//   name: "Amir",
//   email: "amir@example.com",
// }
04

آرایه کلید خالی

TypeScript
const user = {
  name: "Amir",
  age: 22,
};

pick(user, []);
// {}
05

مقادیر undefined نیز انتخاب می‌شوند

TypeScript
const data = {
  value: undefined,
};

pick(data, ["value"]);
// {
//   value: undefined,
// }
06

ویژگی‌های inherited

TypeScript
const parent = {
  role: "admin",
};

const user = Object.create(parent);
user.name = "Amir";

pick(user, ["role"]);
// {
//   role: "admin",
// }
07

ویژگی‌های مستقیم و inherited

TypeScript
const parent = {
  role: "admin",
};

const user = Object.create(parent);
user.name = "Amir";

pick(user, ["name", "role"]);
// {
//   name: "Amir",
//   role: "admin",
// }
08

ویژگی‌های موجود نبودن

TypeScript
const user = {
  name: "Amir",
};

pick(user, ["name"]);
// {
//   name: "Amir",
// }

// TypeScript restricts K to keyof T,
// so arbitrary missing keys cannot normally be passed.
09

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

TypeScript
const user = {
  name: "Amir",
  age: 22,
};

const result = pick(user, ["name"]);

console.log(user);
// {
//   name: "Amir",
//   age: 22,
// }
10

مقادیر تو در تو reference خود را حفظ می‌کنند

TypeScript
const user = {
  name: "Amir",
  profile: {
    age: 22,
  },
};

const result = pick(user, ["profile"]);

result.profile.age = 25;

console.log(user.profile.age);
// 25
ساخته شده با@cyref/js·مستندات رسمی