از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
جاوا اسکریپت: حذف یک ویژگی از یک ObjectAn شی در جاوا اسکریپت مجموعه ای از جفت های کلید-مقدار است. یکی از این جفتهای کلید-مقدار، ویژگی شی نامیده میشود. هر دو کلید و مقادیر خصوصیات می توانند از هر نوع داده ای باشند – Number، String، Array، Object، و غیره. به عنوان مثال: const dog = { name: "Sandy", age: 3, emoji: "…
سرفصلهای مطلب
معرفی
یک شی در جاوا اسکریپت مجموعه ای از ارزش کلیدی جفت یکی از این جفت های کلید-مقدار شی نامیده می شود ویژگی. هر دو کلید و مقادیر خصوصیات می توانند از هر نوع داده ای باشند – عدد، رشته، آرایه، شی و غیره.
مثلا:
const dog = {
name: "Sandy",
age: 3,
emoji: "🐶"
}
اینجا، name: "Sandy"
، age: 3
، و emoji: "🐶"
خواص یک شی سگ هستند.
در این مقاله، ما به چند روش برای حذف یک ویژگی از یک Object و مقایسه آنها برای درک اینکه کدام روش در یک زمینه خاص مناسب است، نگاه می کنیم.
حذف یک ویژگی از یک شی
را حذف اپراتور
روش صحیح معنایی برای حذف یک ویژگی از یک شی، عبارت است delete
اپراتور. بیایید آن را در عمل ببینیم:
const student = {
name: "Jane",
age: 16,
score: {
maths: 95,
science: 90
}
}
// Deleting a property from an object
delete student.age
delete student("score")
console.log(student) // {name: "Jane"}
در مثال بالا، delete
اپراتور برای حذف استفاده می شود name
و score
خواص از student
هدف – شی.
تلاش برای دسترسی به هر یک از ویژگی های حذف شده باز خواهد گشت undefined
:
console.log(student.age) // undefined
همچنین delete
عملگر یک مقدار بولی برمی گرداند که نشان می دهد که آیا حذف با موفقیت انجام شده است:
if (delete student.age) {
console.log("Removed 'age' property from student");
} else {
console.log("Failed to remove 'age' property, perhaps it doesn't exist?");
}
اگر این کد را اجرا کنیم، از آنجایی که ویژگی قبلاً حذف شده است، با استقبال مواجه می شویم:
Failed to remove 'age' property, perhaps it doesn't exist?
شی جدید بدون خاصیت
اگر نمیخواهیم یک شی را در جای خود تغییر دهیم، بلکه نسخهای از آن را بدون خاصیت خاص نیز میخواهیم، میتوانیم فقط یک شیء دیگر با همان ویژگیها به جز یکی ایجاد کنیم.
در مواردی که نام خاصیتی را که می خواهیم حذف کنیم می دانیم، فقط می توانیم از شی استفاده کنیم تخریب کننده برای باز کردن شی به 2 قسمت:
- اموالی که می خواهیم حذف کنیم
- یک شی که نشان دهنده بقیه شی است
const car = {
brand: "Ford",
color: "blue",
yearOfManufacturing: 2019
}
const {yearOfManufacturing, ...rest} = car;
console.log(rest); // {brand: "Ford", color: "blue"}
با این حال، اگر نام دقیق خاصیتی را که میخواهیم حذف کنیم ندانیم، باید فیلتری بسازیم که بررسی کند آیا یک ویژگی با معیارهای حذف مطابقت دارد یا خیر.
به عنوان مثال، بیایید تمام ویژگی هایی که دارای یک مقدار عددی هستند را حذف کنیم:
const developer = {
name : "Fred",
dailyCoffeIntake : 2,
favoriteLanguage : "Haskell",
age : 27
};
const keysToKeep = Object.keys(developer).filter(
(key)=> {
return !Number.isInteger(developer(key))
});
const newDeveloper = {};
keysToKeep.forEach((key)=>{
newDeveloper(key) = developer(key)
});
console.log(newDeveloper); // {name: "Fred", favoriteLanguage: "Haskell"}
را کاهش دادن() تابع
به طور متناوب می توانیم از reduce()
متد، که یک روش آرایه داخلی است که یک مجموعه و یک تابع کاهش را به عنوان آرگومان می گیرد.
سپس این تابع در تمام عناصر مجموعه تکرار می شود و انباشت کننده را تغییر می دهد (که می توانید به عنوان یک نتیجه موقت برای هر مرحله فکر کنید) و آن را برمی گرداند. بیایید این روش را در عمل ببینیم:
const dog = {
name: "Sandy",
age: 3,
emoji: "🐶"
}
const newDog = Object.keys(dog).reduce((accumulator, key) => {
// Copy all except emoji
if(key !== "emoji"){
accumulator(key) = dog(key)
}
return accumulator
}, {})
console.log(newDog) // {name: "Sandy", age: 3}
نتیجه
در این مقاله روش حذف یک ویژگی از یک شی را به چند روش مشاهده کردیم. ما دیده ایم که با استفاده از delete
جسم را جهش خواهد داد. بنابراین، ما چند راه را مورد بحث قرار داده ایم – ...rest
نحو و reduce()
روش، برای حذف یک ویژگی از یک شی بدون جهش در آن.
منتشر شده در 1403-01-17 17:14:03