Falsy values javascript là gì? Cách remove falsy values trong array javascript?

Hôm nay vô tình lướt qua trong mail của mình có bài giới thiệu về 'Falsy values'. Để giải quyết được "Remove Falsy values in array javascript" Các bạn có thể thấy có nhiều giải pháp khác nhau tuỳ thuộc vào mỗi người mỗi dự án. 

Quan trọng là các bạn phải hiểu những khái niệm đó, để khi đi phỏng vấn or đàn em nó hỏi thì có thẻ giải thích cặn kẽ cho tụi nó Thật ra thì 'Falsy values' này mình đã được nghe từ lâu nhưng mình cũng e rằng còn nhiều bạn còn chưa biết nhiều về cụm từ này, mặc dù hiểu nghĩa nó, nên mình sẽ viết rõ hơn về vấn đề này dựa trên bài blog đó. Và các bạn cũng nên chú ý 'Falsy values' vì cũng xuất hiện trong các câu phỏng vấn, để tìm ứng viên tiềm năng. 

1 - Falsy values là gì?

Nếu bạn biết English haha, thì bạn cũng hiểu cụm từ đó là gì rồi đúng không? Những giá trị "Falsy values" là gồm những giá trị như là false, null, 0, "", undefined, và NaN. 2 - Thực tế về bài toán Falsy values. 

Trong thực tế có nhiều trường hợp ta thường gặp sau :

   + bouncer([7, "ate", "", false, 9]) trả về [7, "ate", 9].
   + bouncer(["a", "b", "c"]) trả về ["a", "b", "c"].
   + bouncer([false, null, 0, NaN, undefined, ""]) trả về [].
   + bouncer([1, null, NaN, 2, undefined]) trả về [1, 2].

3 - Cách giải quyết remove Falsy values.

Đầu tiên ta phải biết đi từng bước để giải bài toán trên.

    + Tất nhiên là phải remove những giá trị (falsy values) trong một array cho trước. 

    + Phải biết về những falsy values là những giá trị nào? nhắc lại lần nữa false, null, 0, "", undefined, và NaN. 

    + Giải quyết vấn đề : chúng ta sẽ converting những value về typeof Boolean. 

4 - Code

Mình nói trước với các bạn là có nhiều cách để lọc ra những giá trị đó và đây là một trong những cách đó. 

Giải pháp 1: Chúng ta sử dụng .filter( ) và Boolean( ). Hiểu về Boolean trong javascript thế nào?

  Boolean(false); // false
  Boolean(""); // false
  Boolean(null); // false
  Boolean(undefined); // false
  Boolean(0); // false
  Boolean(NaN); // false

  Boolean(1); // true
  Boolean("hello"); // true
  Boolean(true); // true
  Boolean({}); // true
  Boolean([]); // true
  

Sau đó dùng .filter() nữa là có vẻ ok. // dùng filter

  function bouncerWithFilter(arr) {
      return arr.filter(element => Boolean(element) === true)
   
      //or có thể viết 
      //return arr.filter(element => element)
      //or có thể viết 
      //return arr.filter(Boolean)
  }

  console.log(bouncerWithFilter([7, "ate", "", false, undefined, null, 9]))
  

Giải pháp 2: không dùng filter( ) nhưng dùng Boolean( ).

  // không dùng filter
  function bouncerWithoutFilter(arr) {
      // Don't show a false ID to this bouncer.
      var falsy;
      var trueArr = [];
      for (i = 0; i < arr.length; i++) {
          falsy =  Boolean(arr[i]);
          if (falsy === true) {
          trueArr.push(arr[i]);
          }
      }
      return trueArr;
  }

  console.log(bouncerWithoutFilter([7, "ate", "", false, undefined, null, 9]))
  

check code: Here

5 - Kết luận.

 Để giải quyết được "Remove Falsy values in array javascript" Các bạn có thể thấy có nhiều giải pháp khác nhau tuỳ thuộc vào mỗi người mỗi dự án. 

Quan trọng là các bạn phải hiểu những khái niệm đó, để khi đi phỏng vấn or đàn em nó hỏi thì có thẻ giải thích cặn kẽ cho tụi nó. bro nào có những góp ý or những giải pháp hay hơn thì leave a comment trong bài viết này giúp mình nha. 

Cảm ơn mọi người đã đọc! 

Tham khảo thêm : https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-algorithm-scripting/falsy-bouncer/

https://codewithhugo.com/avoiding-falsy-values-in-javascript-arrays/

https://medium.freecodecamp.org/how-to-remove-falsy-values-from-an-array-in-javascript-e623dbbd0ef2