1.38.0mapKeys
یک شیء جدید ایجاد میکند که کلیدهای آن با استفاده از iteratee تغییر کردهاند و مقادیر اصلی حفظ میشوند.
mapKeys(object, iteratee):Record<K, T[keyof T]>نحوه عملکرد
برای هر ویژگی مستقیم، قابلشمارش و دارای کلید رشتهای، iteratee مقدار، کلید و شیء اصلی را دریافت میکند. مقدار برگشتی به کلید جدید تبدیل میشود و مقدار اصلی حفظ میشود.
آرگومانهای iteratee
iteratee سه آرگومان دریافت میکند: مقدار فعلی، کلید فعلی و شیء اصلی.
کلیدهای تکراری
اگر چند ویژگی یک کلید جدید یکسان تولید کنند، مقدار ویژگی بعدی مقدار قبلی را overwrite میکند.
ویژگیهای پردازششده
این implementation از Object.keys استفاده میکند، بنابراین ویژگیهای inherited، غیرقابلشمارش و ویژگیهای دارای کلید Symbol از شیء اصلی نادیده گرفته میشوند.
پارامترها
objectTالزامیشیئی که کلیدهای آن باید تغییر داده شوند.
iteratee(value: T[keyof T], key: keyof T, object: T) => Kالزامیتابعی که مقدار فعلی، کلید و شیء اصلی را دریافت کرده و کلید جدید را برمیگرداند.
مقدار بازگشتی
Record<K, T[keyof T]>یک شیء جدید که مقادیر اصلی را تحت کلیدهای برگشتی توسط iteratee قرار میدهد.
مثالها
استفاده پایه
const users = {
alice: 25,
bob: 30,
};
mapKeys(users, (value, key) => key.toUpperCase());
// {
// ALICE: 25,
// BOB: 30,
// }ساخت کلید از مقدار
const users = {
alice: 25,
bob: 30,
};
mapKeys(users, (value) => `age-${value}`);
// {
// "age-25": 25,
// "age-30": 30,
// }استفاده از کلید و مقدار
const users = {
alice: 25,
bob: 30,
};
mapKeys(users, (value, key) => `${key}-${value}`);
// {
// "alice-25": 25,
// "bob-30": 30,
// }استفاده از شیء اصلی
const data = {
first: 10,
second: 20,
};
mapKeys(data, (value, key, object) => {
return key === "first"
? "primary"
: String(value + object.first);
});
// {
// primary: 10,
// "30": 20,
// }کلیدهای عددی
const data = {
first: "A",
second: "B",
};
mapKeys(data, (value, key) => key === "first" ? 1 : 2);
// {
// "1": "A",
// "2": "B",
// }کلیدهای Symbol
const first = Symbol("first");
const second = Symbol("second");
const data = {
first: "A",
second: "B",
};
mapKeys(data, (value, key) => {
return key === "first" ? first : second;
});
// The resulting object uses the returned symbols as keys.کلیدهای جدید تکراری
const data = {
first: 10,
second: 20,
};
mapKeys(data, () => "value");
// {
// value: 20,
// }شیء خالی
mapKeys({}, () => "key");
// {}شیء اصلی تغییر نمیکند
const data = {
first: 10,
second: 20,
};
const result = mapKeys(data, (value, key) => key.toUpperCase());
console.log(data);
// {
// first: 10,
// second: 20,
// }