- vừa được xem lúc

Top JavaScript tips có thể bạn chưa biết (Phần 3)

0 0 3

Người đăng: Hoang Van Hung

Theo Viblo Asia

Hi các bạn, tiếp tục chuỗi chủ đề bàn luận về JavaScript hôm nay mình sẽ tiếp tục chia sẻ đến các bạn các thủ thuật khi làm việc cùng JS để tối ưu hóa hiệu suất công việc cũng như tạo các "helpers" xịn xò nhất để sẵn sàng đánh chiếm các dự án lớn. Cụ thể như nào thì hãy cùng kéo xuống dưới để tìm hiểu cùng mình nhé (go)

1. Lọc các giá trị unique trong mảng

Trong ES6 đã giới thiệu đến Set, ẻm này có tác dụng loại bỏ các giá trị trùng lặp trong mảng, kết hợp với spread operator bạn có thể tạo ra 1 mảng mới gồm những giá trị unique

const myArray = ['a', 1, 'a', 2, '1'];
const unique = [...new Set(myArray)]; console.log(unique); // > ['a', 1, 2, '1']

Cách này sẽ đáp ứng được với các dữ liệu undefined, null, boolean, string, number. Trường hợp array phức tạp chứa object thì ta phải tìm phương án khác : ))

Trong trường hợp bạn muốn sử dụng với ES5 thì 1 cách khác đó là sử dụng filter, tại đây ta sẽ lặp qua từng phần tử trong mảng để kiếm tra nó đã tồn tại hay chưa để return vào 1 array mới

function onlyUnique(value, index, self) { return self.indexOf(value) === index;
} const myArray = ['a', 1, 'a', 2, '1'];
const unique = myArray.filter(onlyUnique); console.log(unique); // > ['a', 1, 2, '1']

2. Convert kiểu sang Boolean

Khi nhắc đến boolean ta sẽ liên tưởng đến hai giá trị truefalse. Trong JS có tồn tại 2 khái niệm truthyfalsy, falsy bao gồm các giá trị false, 0, -0, 0n, '', null, undefined, NaN, document.all các giá trị còn lại không phải falsy thì được coi là truthy

Trong JS để ép kiểu sang Boolean ta sẽ dùng dấu ! đại diện cho phép phủ định

const isTrue = !0;
const isFalse = !1; console.log(isTrue); // > true
console.log(isFalse); // > false

1 cách nữa đó là sử dụng hàm Boolean() có sẵn trong js (xem thêm về Boolean)

let str = '100';
console.log(Boolean(str)); // > true

3. Convert kiểu sang String

Trong JS để convert sang String bạn chỉ cần cộng giá trị với '' hoặc sử dụng template string trong ES6

const val_1 = 1 + "";
const val_2 = `${1}`; // ES6 console.log(val_1); // > "1"
console.log(val_2); // > "1" console.log(typeof val_1); // > "string"
console.log(typeof val_2); // > "string"

1 cách nữa đó là sử dụng hàm String() có sẵn trong js (xem thêm về String)

let str = 100;
console.log(String(str)); // > '100'

4. Convert kiểu sang Number

Để convert kiểu sang Number ta sẽ sử dụng toán tử +

let int = "100";
int = +int; console.log(int); // > 100
console.log(typeof int); // > "number" console.log(+true); // > 1
console.log(+false); // > 0
console.log(+null); // > 0
console.log(+''); // > 0

1 cách nữa đó là sử dụng hàm Number() có sẵn trong js (xem thêm về Number)

let int = "100";
console.log(Number(int)); // > 100

Ngoài ra ta có thể sử dụng 2 toán tử ~ (toán tử phủ định bitwise). Xem ví dụ sau

let int = ~~'100'; console.log(int); // > 100
console.log(typeof int); // > "number"

Nhìn khó hiểu đúng không, công thức của nó sẽ là ~n = -n - 1. Như vậy ví dụ trên sẽ được giải thích như sau

let int = ~'100'; // -100 - 1 = -101
int = ~int; // -(-101) - 1 = 100 console.log(int); // > 100
console.log(typeof int); // > "number"

5. Tính luỹ thừa

Trước đây để tính luỹ thừa ta sẽ sử dụng hàm Math.pow()

const result = Math.pow(5, 3); // 5^3 = 125
console.log(result); // > 125

Kể từ khi ES7 được phát hành, bạn có thể dùng 2 dấu ** để thay thế, vì sao ư :v vì hiệu năng của nó nhanh hơn

const result = 5 ** 3;
console.log(result); // > 125

6. Convert Float to Integer

Để convert kiểu dữ liệu float sang int thông thường ta sẽ sử dụng 1 số hàm có sẵn như Math.floor(), Math.ceil(), Math.round(). Tuy nhiên có 1 cách nhanh hơn đó là sử dụng | (toán tử OR trong bitwise)

console.log(100.1001 | 0); // > 100
console.log(-100.1001 | 0); // > -100

Giải thích như sau: Nếu n dương thì n | 0 làm tròn xuống. Nếu n âm thì n | 0 làm tròn lên. Nói một cách chính xác hơn, thao tác này sẽ loại bỏ bất cứ thứ gì đứng sau dấu thập phân, cắt bớt một số thực cho một số nguyên.

1 ứng dụng nữa của toán tử này đó là 'cắt chuỗi'. Đây là thứ ta thường làm để loại bỏ bớt đi n kí tự trong chuỗi/số

let str = '1001'; console.log(Number(str.substring(0, str.length - 1))); // > 100

Còn khi sử dụng | nó sẽ như này

let str = '1001'; console.log(Number(str) / 10 | 0); // > 100 (cắt 1 kí tự)
console.log(Number(str) / 100 | 0); // > 10 (cắt 2 kí tự)
console.log(Number(str) / 1000 | 0); // > 1 (cắt 3 kí tự)

Nhìn ngon đúng không =))

7. Các giá trị mặc định dùng operator ||

Trong ES6 hiện tại có feature default argument. Để mô phỏng feature này bạn có thể dùng || (OR operator) bằng cách đưa default value như một param thứ hai. Nếu param đầu tiên trả về false thì param thứ 2 sẽ được dùng như default value.

function User(name, age) { this.name = name || 'Oliver Queen'; this.age = age || 27;
} const user1 = new User();
console.log(user1.name); // > Oliver Queen
console.log(user1.age); // > 27 const user2 = new User('Barry Allen', 25);
console.log(user2.name); // > Barry Allen
console.log(user2.age); // > 25

8. Convert NodeList thành Array

Trong DOM API chắc bạn đã nhiều lần phải dùng đến document.querySelectorAll(). Khi ta chạy function này, nó trả về một array các DOM element là một object NodeList

Nhưng object này không có tất cả các method của array như sort(), reduce(), map(), filter()... Và đây là cách ta hay dùng để convert NodeList thành Array

const elements = document.querySelectorAll('p'); // NodeList const arrayElements = [].slice.call(elements); // Now the NodeList is an array
const arrayElements = Array.from(elements); // This is another way of converting NodeList to Array

Kết luận

Trên đây mình tiếp tục giới thiệu đến các bạn các thủ thuật khi làm việc với JavaScript, hi vọng sẽ giúp ích cho các bạn trong quá trình làm việc, nghiên cứu

Nếu thấy bài viết hay, hãy cho mình +1 upvote nhé. Nếu thích mình hãy nhấn nút follow để biết thêm nhiều thứ hay ho hơn. Chúc bạn thành công và hẹn gặp lại ở bài viết sau nhé !

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 136

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 117

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 93

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 229