ویرگول
ورودثبت نام
افشین
افشین
افشین
افشین
خواندن ۱ دقیقه·۶ سال پیش

حذف مقادیر falsy از آرایه در ES6

راه های مختلفی برای حذف مقادیر falsy از آرایه وجود دارد، برای مثال با استفاده از for، for...in، forEach , filter می توان این عملیات حذف را انجام داد. اما ساده ترین راه که درگیر پیچیدگی های الگوریتم پیاده سازی نشویم کدام است؟

ساختار الگوریتم:

  • حذف تمام مقادیر falsy از آرایه
  • مقادیر falsy در جاوااسکریپت شامل null, undefined, '', false, Nan و 0 می باشد
  • تبدیل مقادیر به مقدار Boolean

مقادیر مورد تست:

  • نمونه [1, null, 2, 4, '', undefined, 6] که باید آرایه [1,2,4,6] را برگرداند
  • نمونه ['Hello', '', null, 0, 'world', undefined, NaN, false] که باید مقدار ['Hello', 'world'] را برگرداند
  • نمونه [0, NaN, null, undefined] که آرایه خالی [] بر می گرداند
  • نمونه ['a', 'b', 'c'] که همان مقادیر را بدون تغییر بر می گرداند
  • نمونه ['a', 1, null, 'b', 0, 2, 'c', false] که باید مقدار ['a', 1,'b',2,'c'] را برگرداند

بهترین راه حل:

بهترین شیوه برای حذف مقادیر falsy استفاده از متد filter هست. این متد یک تابع به عنوان ورودی گرفته و آن را برای هر عنصر آرایه فراخوانی می کند. در تابع ارسالی به این متد می توانیم شرط خود برای بررسی مقدار را درج کرده و در نهایت مقدار true/false برگردانیم که در صورت true بودن عنصر جاری به آرایه جدید اضافه می شود.

مثال (دمو آنلاین):

// remove falsy elements const removeFalsyElements = items => items.filter(element => !!element) console.log(removeFalsyElements([1, null, 2, 4, '', undefined, 6])); console.log(removeFalsyElements(['Hello', '', null, 0, 'world', undefined, NaN, false])); console.log(removeFalsyElements([0, NaN, null, undefined])); console.log(removeFalsyElements(['a', 'b', 'c'])); console.log(removeFalsyElements(['a', 1, null, 'b', 0, 2, 'c', false]));

نکته: برای تبدیل مقادیر مختلف به مقدار Boolean می توانیم از دو روش استفاده کنیم:

۱. استفاده از تابع Boolean(): با ارسال مقدار مورد نظر به این تابع با توجه به تابع ارسالی مقدار true/false برگردانده می شود:

Boolean(value);

۲. استفاده از عملگر( ! ): در صورتی که قبل از مقدار مورد نظر دو علامت !! بگذارید تبدیل به مقدار boolean می شود.

!!value<br/>

javascriptes6array
۱۰
۱
افشین
افشین
شاید از این پست‌ها خوشتان بیاید