1.38.0mapValues
یک شیء جدید ایجاد میکند که در آن مقادیر با استفاده از iteratee تغییر کردهاند و کلیدهای اصلی حفظ میشوند.
mapValues(object, iteratee):{ [K in keyof T]: R }نحوه عملکرد
برای هر ویژگی مستقیم، قابلشمارش و دارای کلید رشتهای، iteratee مقدار، کلید و شیء اصلی را دریافت میکند. مقدار برگشتی آن به مقدار جدید تبدیل میشود و کلید اصلی حفظ میشود.
آرگومانهای iteratee
iteratee سه آرگومان دریافت میکند: مقدار فعلی، کلید فعلی و شیء اصلی.
نوع خروجی
جنریک R نوع مقداری را که iteratee برمیگرداند مشخص میکند. بنابراین تمام ویژگیهای شیء خروجی دارای همان نوع R هستند.
ویژگیهای پردازششده
این implementation از Object.keys استفاده میکند، بنابراین فقط ویژگیهای مستقیم، قابلشمارش و دارای کلید رشتهای پردازش میشوند. ویژگیهای inherited، غیرقابلشمارش و Symbol نادیده گرفته میشوند.
پارامترها
objectTالزامیشیئی که مقادیر آن باید تغییر داده شوند.
iteratee(value: T[keyof T], key: keyof T, object: T) => Rالزامیتابعی که مقدار فعلی، کلید و شیء اصلی را دریافت کرده و مقدار جدید را برمیگرداند.
مقدار بازگشتی
{ [K in keyof T]: R }یک شیء جدید با همان کلیدهای شیء اصلی و مقادیر تبدیلشدهای که توسط iteratee برگردانده شدهاند.
مثالها
استفاده پایه
const prices = {
apple: 10,
banana: 20,
};
mapValues(prices, (value) => value * 2);
// {
// apple: 20,
// banana: 40,
// }تبدیل مقادیر به رشته
const scores = {
math: 18,
physics: 20,
};
mapValues(scores, (value) => `Score: ${value}`);
// {
// math: "Score: 18",
// physics: "Score: 20",
// }استفاده از کلید
const prices = {
apple: 10,
banana: 20,
};
mapValues(prices, (value, key) => `${key}: ${value}`);
// {
// apple: "apple: 10",
// banana: "banana: 20",
// }استفاده از شیء اصلی
const data = {
first: 10,
second: 20,
};
mapValues(data, (value, key, object) => {
return value + object.first;
});
// {
// first: 20,
// second: 30,
// }تغییر نوع مقدار خروجی
const users = {
alice: 25,
bob: 30,
};
mapValues(users, (value) => value >= 30);
// {
// alice: false,
// bob: true,
// }شیء خالی
mapValues({}, () => "value");
// {}شیء اصلی تغییر نمیکند
const data = {
first: 10,
second: 20,
};
const result = mapValues(data, (value) => value * 2);
console.log(data);
// {
// first: 10,
// second: 20,
// }ویژگیهای inherited
const parent = {
inherited: 10,
};
const data = Object.create(parent);
data.own = 20;
mapValues(data, (value) => value * 2);
// {
// own: 40,
// }