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

20 Hàm tiện ích JavaScript bạn cần biết để tăng năng suất

0 0 2

Người đăng: Vinh Phạm

Theo Viblo Asia

Chào các bạn lập trình viên frontend, hôm nay mình sẽ chia sẻ một số hàm tiện ích giúp tránh việc lặp lại mã và tăng năng suất làm việc. Những đoạn mã nhỏ này thường được sử dụng trong nhiều dự án và giúp tiết kiệm rất nhiều thời gian khi phải làm đi làm lại cùng một việc ở nhiều tệp khác nhau.

1. Tạo số nguyên ngẫu nhiên trong khoảng minmax

Hữu ích khi bạn cần tạo một ID ngẫu nhiên cho đối tượng nào đó trong dữ liệu.

const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
scrib.show(randomInt(100,100000))

2. Lấy thời gian đã trôi qua

Dùng để hiển thị thời gian ai đó online lần cuối trong ứng dụng chat hoặc thời gian cập nhật cuối cùng của tệp.

const timeAgo = date => { const diff = (new Date() - new Date(date)) / 1000; const units = [ ['year', 31536000], ['month', 2592000], ['day', 86400], ['hour', 3600], ['minute', 60], ['second', 1] ]; for (let [unit, sec] of units) { const val = Math.floor(diff / sec); if (val >= 1) return `${val} ${unit}${val > 1 ? 's' : ''} ago`; } return 'just now';
};
scrib.show(timeAgo("2025/05/12"))

3. Định dạng ngày theo YYYY-MM-DD

Hữu ích để chuẩn hóa ngày từ API về dạng hiển thị chuẩn cho giao diện.

const formatDate = date => new Date(date).toISOString().split('T')[0];
scrib.show(formatDate("2025/05/12"))

4. Loại bỏ phần tử trùng lặp trong mảng

Giúp làm sạch dữ liệu mảng.

const unique = arr => [...new Set(arr)];
scrib.show(unique([1,1,2,2,2,3,4,5,5,9]))

5. Làm phẳng mảng lồng nhau

Chuyển mảng nhiều tầng thành mảng 1 tầng để dễ xử lý.

const flatten = arr => arr.flat(Infinity);
scrib.show(flatten([1,1,[2,2,2],[3,4,[5]],5,9]))

6. Xáo trộn mảng

Hữu ích khi bạn muốn hiển thị danh sách theo thứ tự ngẫu nhiên.

const shuffle = arr => arr.sort(() => Math.random() - 0.5);
scrib.show(shuffle([1,1,2,2,2,3,4,5,5,9]))

7. Lấy phần giao nhau giữa hai mảng

Dùng để so sánh và tìm phần tử chung.

const intersect = (a, b) => a.filter(x => b.includes(x));
scrib.show(intersect([1,2,3,4],[1,3,4,5]))

8. Viết hoa chữ cái đầu tiên

Dùng để định dạng văn bản hiển thị trên giao diện.

const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1);
scrib.show(capitalize("mysterio"));

9. Tạo slug (chuỗi URL có dấu gạch ngang)

Chuyển chuỗi thành dạng slug dễ đọc và thân thiện với URL.

const slugify = str => str.toLowerCase().trim().replace(/\s+/g, '-').replace(/[^\w\-]+/g, '');
scrib.show(slugify("products and services")); // products-and-services

10. Rút gọn chuỗi

Thêm dấu "..." sau một số ký tự giới hạn.

const truncate = (str, len) => str.length > len ? str.slice(0, len) + '...' : str;
scrib.show(truncate("Web development has many frameworks", 25));

11. Kiểm tra định dạng email

Xác thực email hợp lệ hay không.

const isEmail = str => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(str);
scrib.show(isEmail("mysterio09@gmail.com"));

12. Kiểm tra object rỗng

Dùng để kiểm tra trước khi xử lý object.

const isEmptyObject = obj => Object.keys(obj).length === 0;
scrib.show(isEmptyObject({})); // true
scrib.show(isEmptyObject({ name: "Mysterio" })); // false

13. Lấy tham số từ URL

Chuyển query string thành object.

const getQueryParams = url => Object.fromEntries(new URL(url).searchParams.entries());
const url = "https://example.com/user?name=mysterio&age=24&country=India";
scrib.show(getQueryParams(url));

14. Chuyển object thành query string

Làm ngược lại hàm số 13.

const toQueryString = obj => new URLSearchParams(obj).toString();
const person = { "name": "mysterio", "age": "24", "country": "India" };
scrib.show(`https://example.com/user?${toQueryString(person)}`);

15. Kiểm tra năm nhuận

Hữu ích khi áp dụng logic phụ thuộc vào số ngày.

const isLeapYear = year => new Date(year, 1, 29).getDate() === 29;
scrib.show(isLeapYear("2025-05-15"));

16. Loại bỏ giá trị "falsy"

Xóa các giá trị như false, undefined, null, 0, "",...

const compact = arr => arr.filter(Boolean);
scrib.show(compact([false, undefined, null, 0, 1, 2, 3]));

17. Đếm số lần xuất hiện trong mảng

Phân loại tần suất phần tử.

const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
scrib.show(countOccurrences([1,1,2,2,2,3,4,5,5,9], 2));

18. Tìm phần tử trùng lặp trong mảng

const findDuplicates = arr => { return [...new Set(arr.filter((item, index) => arr.indexOf(item) !== index))];
};
scrib.show(findDuplicates([1,1,2,2,2,3,4,5,5,9]));

19. Kiểm tra giá trị có phải số không

Hữu ích khi cần tính toán mà không gây lỗi.

const isNumeric = val => !isNaN(parseFloat(val)) && isFinite(val);
scrib.show(isNumeric(NaN)); // false
scrib.show(isNumeric("24s")); // false
scrib.show(isNumeric("24")); // true
scrib.show(isNumeric(24)); // true
scrib.show(isNumeric(24.45)); // true

20. Lấy các khóa cụ thể từ object

Chỉ lấy ra các thuộc tính bạn cần.

const pick = (obj, keys) => keys.reduce((acc, key) => { if (key in obj) acc[key] = obj[key]; return acc; }, {});
const person = { "name": "mysterio", "age": "24", "country": "India" };
scrib.show(pick(person, ["name", "age"]));

Vậy là xong! Hãy cho mình biết nếu bạn muốn mình cải thiện điều gì trong bài viết này 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 549

- 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 462

- 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 170

- 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 159

- 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 120

- 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 264