1.38.0filterObject
یک شیء جدید شامل ویژگیهایی ایجاد میکند که شرط predicate را برآورده میکنند.
filterObject(object, predicate):Partial<T>پارامترها
objectTالزامیشیئی که ویژگیهای آن باید فیلتر شوند.
predicate(value: T[keyof T], key: keyof T, object: T) => booleanالزامیتابعی که برای هر ویژگی own و enumerable با کلید string اجرا میشود. این تابع مقدار، کلید و شیء اصلی را دریافت میکند. اگر true برگرداند، ویژگی در نتیجه قرار میگیرد.
مقدار بازگشتی
Partial<T>یک شیء جدید شامل فقط ویژگیهایی که predicate برای آنها true برگردانده است.
مثالها
استفاده پایه
فقط ویژگیهایی را نگه میدارد که مقدارشان number است.
const result = filterObject(
{
name: "Alice",
age: 25,
score: 90,
},
(value) => typeof value === "number",
);
console.log(result);
// {
// age: 25,
// score: 90
// }فیلتر بر اساس کلید
predicate میتواند کلید ویژگی را بررسی کند.
const result = filterObject(
{
name: "Alice",
age: 25,
active: true,
},
(_value, key) => key !== "active",
);
console.log(result);
// {
// name: "Alice",
// age: 25
// }فیلتر بر اساس مقدار
predicate مقدار هر ویژگی را دریافت میکند.
const result = filterObject(
{
a: 5,
b: 12,
c: 20,
},
(value) => typeof value === "number" && value > 10,
);
console.log(result);
// {
// b: 12,
// c: 20
// }استفاده از شیء اصلی
سومین آرگومان predicate همان شیء اصلی است.
const result = filterObject(
{
min: 10,
max: 20,
value: 15,
},
(value, key, object) => {
if (key === "value") {
return (
typeof value === "number" &&
value >= object.min &&
value <= object.max
);
}
return false;
},
);
console.log(result);
// {
// value: 15
// }بدون نتیجه
اگر predicate برای تمام ویژگیها false برگرداند، یک شیء خالی برگردانده میشود.
const result = filterObject(
{
a: 1,
b: 2,
},
() => false,
);
console.log(result);
// {}همه ویژگیها
اگر برای تمام ویژگیها true برگردانده شود، تمام ویژگیهای own و enumerable با کلید string کپی میشوند.
const result = filterObject(
{
name: "Alice",
age: 25,
},
() => true,
);
console.log(result);
// {
// name: "Alice",
// age: 25
// }شیء اصلی بدون تغییر
تابع یک شیء نتیجه جداگانه ایجاد میکند و شیء ورودی را تغییر نمیدهد.
const original = {
name: "Alice",
age: 25,
};
const result = filterObject(
original,
(value) => typeof value === "string",
);
console.log(original);
// {
// name: "Alice",
// age: 25
// }
console.log(result);
// {
// name: "Alice"
// }
console.log(result === original);
// falseویژگیهای inherited
ویژگیهای inherited پردازش نمیشوند، چون implementation از Object.keys استفاده میکند.
const parent = {
inherited: true,
};
const object = Object.create(parent);
object.own = true;
const result = filterObject(
object,
() => true,
);
console.log(result);
// {
// own: true
// }