1.38.0pick
یک شیء جدید شامل فقط ویژگیهای مشخصشدهای ایجاد میکند که در شیء یا زنجیره prototype آن وجود دارند.
pick(object, keys):Pick<T, K>نحوه عملکرد
این تابع یک شیء جدید ایجاد میکند و هر کلید درخواستشده را با عملگر in بررسی میکند. اگر کلید در خود شیء یا هر جایی از زنجیره prototype وجود داشته باشد، مقدار فعلی آن در نتیجه قرار میگیرد.
زنجیره prototype
برخلاف بررسی با hasOwnProperty، عملگر in ویژگیهای inherited را نیز در نظر میگیرد. بنابراین یک ویژگی inherited میتواند وارد شیء خروجی شود.
کپی سطحی
مقادیر انتخابشده بهصورت reference کپی میشوند. اشیای تو در تو و آرایهها clone نمیشوند.
شیء اصلی
این تابع یک شیء نتیجه جداگانه ایجاد میکند و مستقیماً شیء ورودی را تغییر نمیدهد.
پارامترها
objectTالزامیشیئی که باید ویژگیها از آن انتخاب شوند.
keysK[]الزامیآرایهای از کلیدهایی که باید در شیء خروجی قرار بگیرند.
مقدار بازگشتی
Pick<T, K>یک شیء جدید شامل ویژگیهای درخواستشدهای که در شیء یا زنجیره prototype آن وجود دارند.
مثالها
استفاده پایه
const user = {
name: "Amir",
age: 22,
role: "developer",
};
pick(user, ["name", "age"]);
// {
// name: "Amir",
// age: 22,
// }انتخاب یک ویژگی
const user = {
name: "Amir",
age: 22,
};
pick(user, ["name"]);
// {
// name: "Amir",
// }انتخاب چند ویژگی
const user = {
name: "Amir",
age: 22,
email: "amir@example.com",
};
pick(user, ["name", "email"]);
// {
// name: "Amir",
// email: "amir@example.com",
// }آرایه کلید خالی
const user = {
name: "Amir",
age: 22,
};
pick(user, []);
// {}مقادیر undefined نیز انتخاب میشوند
const data = {
value: undefined,
};
pick(data, ["value"]);
// {
// value: undefined,
// }ویژگیهای inherited
const parent = {
role: "admin",
};
const user = Object.create(parent);
user.name = "Amir";
pick(user, ["role"]);
// {
// role: "admin",
// }ویژگیهای مستقیم و inherited
const parent = {
role: "admin",
};
const user = Object.create(parent);
user.name = "Amir";
pick(user, ["name", "role"]);
// {
// name: "Amir",
// role: "admin",
// }ویژگیهای موجود نبودن
const user = {
name: "Amir",
};
pick(user, ["name"]);
// {
// name: "Amir",
// }
// TypeScript restricts K to keyof T,
// so arbitrary missing keys cannot normally be passed.شیء اصلی تغییر نمیکند
const user = {
name: "Amir",
age: 22,
};
const result = pick(user, ["name"]);
console.log(user);
// {
// name: "Amir",
// age: 22,
// }مقادیر تو در تو reference خود را حفظ میکنند
const user = {
name: "Amir",
profile: {
age: 22,
},
};
const result = pick(user, ["profile"]);
result.profile.age = 25;
console.log(user.profile.age);
// 25