چگونه می توان داده های مرتبط را پس از فیلتر کردن آرایه در جاوا اسکریپت تغییر داد؟

هنگام کار با آرایه ها و داده های مرتبط با آنها ، معمول است که با موقعیت هایی روبرو شوید که برخی از عناصر باید فیلتر شوند. در این مقاله ، ما مسئله ای را حل خواهیم کرد که در آن شما نیاز به تغییر داده های مرتبط با هر عنصر آرایه به موقعیت های صحیح آنها پس از فرایند فیلتر کردن دارید. بیایید بررسی کنیم که چگونه می توانیم به طور مؤثر به این هدف برسیم.
درک مشکل
اگر ساختار داده ای دارید که عناصر با ابرداده خاص در ارتباط هستند ، فیلتر کردن آرایه می تواند اتصال بین داده ها و عناصر را مختل کند. به عنوان مثال ، در سناریوی خود ، یک آرایه اصلی دارید:
const originalArray = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ];
هنگامی که با یک بیماری فیلتر می شوند ، مانند از بین بردن مقادیر خاص ، عناصر باقیمانده دیگر با ابرداده اصلی خود هماهنگ نیستند. هدف این است که این ابرداده را بر اساس آرایه اصلاح شده و شاخص های عناصر حذف شده به تراز صحیح برگردانیم.
راه حل گام به گام
برای دستیابی به تغییر داده های مرتبط پس از فیلتر کردن آرایه ، باید ساختار داده را با دقت دستکاری کنیم. ما از اطلاعات زیر استفاده خواهیم کرد:
- آرایه فیلتر شده جدید.
- شاخص های عناصر حذف شده.
- طول آرایه اصلی.
بیایید راه حل را تجزیه کنیم:
مرحله 1: ساختارهای خود را تعریف کنید
ابتدا یک تابع ابزار را برای تولید کلیدهای داده های مرتبط بر اساس شاخص های آرایه تعریف کنید:
function getKey(i) {
return `unknownProcess[${i}]`;
}
مرحله 2: داده های اصلی خود را تنظیم کنید
در مرحله بعد ، آرایه اصلی خود را به همراه داده های مرتبط با استفاده از آن جمع کنید Record
:
const associatedData = {};
originalArray.forEach((letter, i) => {
associatedData[getKey(i)] = letter.toUpperCase();
});
مرحله 3: عملکرد شیفت را پیاده سازی کنید
اکنون ، ما عملکرد اصلی را برای رسیدگی به تغییر داده ها پیاده سازی خواهیم کرد:
function shiftDataFromFilter(filteredArray, data, removedIndices, lengthBeforeFilter) {
// Create a new object to hold the aligned data.
const newData = {};
let filteredIndex = 0;
// Iterate through the full range of the original length.
for (let i = 0; i < lengthBeforeFilter; i++) {
// Check if the current index is in the removed indices.
if (!removedIndices.includes(i)) {
// Assign associated data to the new position.
newData[getKey(filteredIndex)] = data[getKey(i)];
filteredIndex++;
}
}
return newData;
}
مرحله 4: از عملکرد تغییر استفاده کنید
با تعریف عملکرد ما ، می توانیم از آن برای تراز کردن داده های مرتبط خود بر اساس آرایه فیلتر شده و شاخص های حذف شده استفاده کنیم:
const filteredArray = [ 'a', 'b', 'd', 'e', 'h', 'i', 'j' ];
const removedIndices = [ 2, 5, 6 ];
const lengthBeforeFilter = originalArray.length;
const shiftedData = shiftDataFromFilter(filteredArray, associatedData, removedIndices, lengthBeforeFilter);
پایان
بعد از اجرای shiftDataFromFilter
عملکرد ، shiftedData
اکنون ابرداده را بر اساس آرایه فیلتر شده جدید به درستی مجدداً تنظیم می کند. داده های مرتبط در شاخص های جدید آنها قابل دسترسی خواهد بود و به شما امکان می دهد پردازش داده ها را به طور مؤثر ادامه دهید.
سوالات متداول
س: اگر هیچ موردی از آرایه اصلی حذف نشود ، چه می شود؟
پاسخ: اگر هیچ موردی برداشته نشود ، آرایه فیلتر شده با اصل مطابقت خواهد داشت و ابرداده هم تراز خواهد ماند.
س: آیا می توانم این عملکرد را برای انواع مختلف ساختار داده تنظیم کنم؟
پاسخ: بله ، تا زمانی که شما همان اصول نقشه برداری را حفظ کنید ، این روش می تواند برای استفاده های مختلف در جایی که ابرداده مرتبط وجود دارد ، سازگار شود.
در نتیجه ، با پیروی از این رویکرد ساختاری برای تغییر داده ها پس از فیلتر آرایه ، می توانید یکپارچگی داده ها را حفظ کرده و اطمینان حاصل کنید که برنامه شما به طور روان اجرا می شود. این که آیا رسیدگی به ورودی های کاربر ، پردازش مجموعه داده های بزرگ یا مدیریت سوابق پویا ، این ساختار کد می تواند به عنوان یک راه حل قابل اعتماد برای چالش های مشابه در برنامه های JavaScript باشد.