از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش فیلتر کردن یک شی با کلید در جاوا اسکریپت اشیاء جاوا اسکریپت مانند آرایه ها یا رشته ها قابل تکرار نیستند، بنابراین نمی توانیم مستقیماً از متد filter() استفاده کنیم. روی یک شی filter() به ما امکان می دهد از طریق یک آرایه تکرار کنیم و فقط آیتم های آن آرایه که با معیارهای خاصی مطابقت دارند را به یک آرایه جدید برمی گرداند. اگر می خواهید به …
سرفصلهای مطلب
معرفی
اشیاء جاوا اسکریپت هستند قابل تکرار نیست مانند آرایه ها یا رشته ها، بنابراین ما نمی تواند استفاده کند را filter()
روش مستقیم روی یک Object
. filter()
به ما اجازه می دهد تا از طریق یک آرایه تکرار کنیم و فقط آیتم های آن آرایه که با معیارهای خاصی مطابقت دارند را به یک آرایه جدید برمی گرداند.
اگر مایلید در مورد روش filter() اطلاعات بیشتری کسب کنید – راهنمای ما برای روش filter() JavaScript را بخوانید!
در این مقاله، روش فیلتر کردن یک شی با استفاده از کلید آن در جاوا اسکریپت را بررسی خواهیم کرد.
یک شی اساساً نقشه ای از ویژگی ها و مقادیر آنهاست. این مجموعه جفت کلید-مقدار یک شی است است. ما به طور طبیعی می توانیم کلیدها و مقادیر را به صورت جداگانه استخراج کنیم:
کلیدها با استفاده از آن استخراج می شوند Object.keys()
، در حالی که مقادیر با استفاده از آن استخراج می شوند Object.values()
. برای بازیابی هر دو کلید و مقادیر، میتوانید از آن استفاده کنید Object.entries()
. ما صرفاً به کلیدهای این مقاله برای فیلتر کردن کلیدها بر اساس معیارهای خاص می پردازیم.
استفاده کردن Object.keys() برای فیلتر کردن یک شی
را Object.keys()
روش برای تولید آرایه ای استفاده می شود که عناصر آن رشته هایی حاوی نام ها (کلیدها) از ویژگی های یک شی شی به عنوان آرگومان ارسال می شود Object.keys()
:
Object.keys(objectName);
به عنوان مثال، فرض کنید یک شی از امتیازات کاربر در موضوعات مختلف داریم:
const userScores = {
chemistry: 60,
mathematics: 70,
physics: 80,
english: 98
};
میتوانیم از طریق شی حلقه بزنیم و کلیدها را واکشی کنیم، که برای این مثال سوژهها هستند:
const names = Object.keys(userScores);
console.log(names); // ("chemistry","mathematics","physics","english")
بعد از اینکه کلیدها را تولید کردید، می توانید از آن استفاده کنید filter()
برای حلقه روی مقادیر موجود و برگرداندن فقط مقادیری که معیارهای مشخص شده را دارند. در نهایت می توانید استفاده کنید reduce()
به عنوان مثال، کلیدهای فیلتر شده و مقادیر آنها را در یک شی جدید جمع آوری کنید.
توجه داشته باشید: filter()
در زنجیره زدن با سایر روش های کاربردی عالی است!
فرض کنید یک Object داریم و میخواهیم فقط جفتهای کلید-مقدار را با کلمه “name” در کلیدها برگردانیم:
const user = {
firstName: "John",
lastName: "Doe",
userName: "johndoe12",
email: "(email protected)",
age: 37,
hobby: "Singing"
};
ما می توانیم با استفاده از کلید Objects فیلتر کنیم:
const names = Object.keys(user)
.filter((key) => key.includes("Name"))
.reduce((obj, key) => {
return Object.assign(obj, {
(key): user(key)
});
}, {});
console.log(names);
استفاده کردیم Object.keys(user)
برای تولید همه کلیدها به صورت یک آرایه و در نتیجه یک آرایه:
("firstName","lastName","userName","email","age","hobby")
سپس از تابع آرایه استفاده کردیم includes()
به عنوان معیار، در filter()
روش، برای رفتن روی هر عنصر در آرایه برای تعیین اینکه آیا هیچ کلیدی شامل کلمه “Name” است یا خیر:
("firstName","lastName","userName")
سپس از آن استفاده کردیم reduce()
برای کاهش آرایه به یک شی.
توجه داشته باشید: را reduce()
تابع دو آرگومان را می پذیرد: یک شی به عنوان پارامتر اول (هویت) و مقدار تکرار فعلی به عنوان پارامتر دوم.
استفاده می کنیم Object.assign()
برای ترکیب اشیاء مبدا در یک شی هدف در شی جدید در حال تولید. را Object.assign()
تابع می گیرد Object
که در حال ساخت است و جفت کلید-مقدار فعلی را که به آن منتقل می کنیم اضافه می کند.
و در پایان این – ما یک شی جدید داریم که توسط کلیدها فیلتر شده است:
{ firstName: 'John', lastName: 'Doe', userName: 'johndoe12' }
آرایه اشیاء را بر اساس کلید فیلتر کنید
اغلب اوقات، اشیایی که پردازش می کنیم در یک آرایه ترتیب بندی می شوند. فیلتر کردن هر کدام به آسانی فیلتر کردن یکی است – ما فقط از طریق آرایه تکرار می کنیم و همان مراحل را اعمال می کنیم:
const users = {
John: { username: 'johncam112', age:19 },
Daniel: { key: 'Dandandel1', age:21 },
Ruth: { key: 'rutie01', age:24 },
Joe: { key: 'Joemathuel', age:28 }
};
const selectedUsers = ('Ruth', 'Daniel');
const filteredUsers = Object.keys(users)
.filter(key => selectedUsers.includes(key))
.reduce((obj, key) => {
obj(key) = users(key);
return obj;
}, {});
console.log(filteredUsers);
در مثال بالا، شی Users را فیلتر کردیم تا فقط اشیاء را برگرداند selectedUsers
، آنها را با کلید فیلتر کنید:
{
Daniel: {
key:"Dandandel1",
age:21
},
Ruth: {
key:"rutie01",
age:24
}
}
نتیجه
در این مقاله کوتاه – ما نگاهی به فیلتر کردن اشیا بر اساس مقدار، با استفاده از Object.keys()
روش، فیلتر شده از طریق filter()
روش.
منتشر شده در 1403-01-11 11:37:04