Tìm Giá Trị Lớn Nhất Và Nhỏ Nhất
Thay vì sử dụng vòng lặp, bạn có thể tận dụng toán tử Spread (...) hoặc Function.prototype.apply để tìm nhanh cực trị của một mảng số.
const dataPoints = [42, -15, 88, 0, 103, -7];
// Cách 1: Sử dụng spread operator (Khuyên dùng)
const highestValue = Math.max(...dataPoints);
const lowestValue = Math.min(...dataPoints);
// Cách 2: Sử dụng apply
const maxVal = Math.max.apply(null, dataPoints);
const minVal = Math.min.apply(null, dataPoints);
Loại Bỏ Phần Tử Trùng Lặp Trong Mảng
Kết hợp cấu trúc dữ liệu Set với toán tử Spread là phương pháp ngắn gọn và hiệu quả nhất để lọc ra các giá trị duy nhất.
const rawItems = ['apple', 'banana', 'apple', 'orange', 'banana', 'grape'];
const uniqueItems = [...new Set(rawItems)];
Cắt Mảng Và Truy Xuất Phần Tử Cuối
Có nhiều cách để cắt bớt mảng hoặc lấy phần tử cuối cùng. Tùy vào ngữ cảnh mà splice, slice hoặc thay đổi length sẽ có hiệu suất khác nhau.
const sequence = [10, 20, 30, 40, 50, 60, 70];
// Cắt bỏ 3 phần tử đầu tiên
// Sử dụng splice (thay đổi mảng gốc)
sequence.splice(0, 3);
// Hoặc thay đổi trực tiếp thuộc tính length
sequence.length = 4;
// Sử dụng slice (không thay đổi mảng gốc, hiệu suất tốt cho việc tạo mảng mới)
const truncated = sequence.slice(0, 4);
// Lấy phần tử cuối cùng
const lastElement = sequence[sequence.length - 1];
// Hoặc dùng slice với chỉ số âm
const lastItem = sequence.slice(-1)[0];
Làm Rỗng Mảng
Để giải phóng bộ nhớ và xóa sạch dữ liệu trong mảng, bạn có thể gán lại length hoặc khởi tạo một mảng mới.
let bufferData = [1, 2, 3, 4, 5];
// Cách 1: Giữ nguyên tham chiếu bộ nhớ
bufferData.length = 0;
// Cách 2: Gán tham chiếu mới
bufferData = [];
Sắp Xếp Mảng Theo Bảng Chữ Cái
Khi làm việc với chuỗi, việc lọc trùng và sắp xếp theo thứ tự từ điển có thể được tối ưu bằng localeCompare hoặc các hàm so sánh tùy chỉnh.
const keywords = ['react', 'vue', 'angular', 'svelte', 'vue', 'react', 'solid'];
const sortedUniqueKeywords = keywords
.filter((item, index, self) => self.indexOf(item) === index)
.sort((a, b) => a.localeCompare(b));
Gộp Mảng Và Đối Tượng
Toán tử Spread (...) cung cấp cú pháp hiện đại để nối mảng hoặc trộn các thuộc tính của đối tượng.
// Gộp mảng
const frontend = ['HTML', 'CSS'];
const backend = ['Node.js', 'Python'];
const fullstack = [...frontend, ...backend];
// Gộp đối tượng
const userConfig = {
theme: 'dark',
language: 'vi'
};
const userOverrides = {
theme: 'light',
fontSize: 14
};
// Thuộc tính ở đối tượng sau sẽ ghi đè thuộc tính trùng lặp ở đối tượng trước
const finalConfig = { ...userConfig, ...userOverrides };
Kiểm Tra Chính Xác Kiểu Dữ Liệu
Sử dụng Object.prototype.toString là cách đáng tin cậy nhất để phân biệt các kiểu dữ liệu phức tạp như Array, Date, RegExp.
const checkType = (expectedType) => (value) => {
return Object.prototype.toString.call(value) === `[object ${expectedType}]`;
};
const isString = checkType('String');
const isDate = checkType('Date');
console.log(isString("hello")); // true
console.log(isDate(new Date())); // true
Kiểm Tra Sự Tồn Tại Của Thuộc Tính
Cần phân biệt rõ việc kiểm tra thuộc tính trên chính đối tượng hay trên toàn bộ chuỗi prototype.
const profile = {
username: "dev_master",
role: "admin"
};
// Chỉ kiểm tra thuộc tính riêng của đối tượng (không bao gồm prototype)
console.log(profile.hasOwnProperty('username')); // true
console.log(profile.hasOwnProperty('toString')); // false
// Kiểm tra cả thuộc tính kế thừa từ prototype
console.log('username' in profile); // true
console.log('toString' in profile); // true
Chuyển Đổi Giữa Chuỗi Và Số
Các toán tử ngôi sao hoặc cộng trừ có thể được tận dụng để ép kiểu nhanh chóng mà không cần gọi hàm.
// Số / Boolean sang Chuỗi
const count = 99;
const countStr = `${count}`; // Hoặc dùng count + ''
// Chuỗi sang Số
const priceStr = "250";
const priceNum = +priceStr;
console.log(+true); // 1
console.log(+false); // 0
console.log(+"3.14"); // 3.14
Ép Kiểu Số Thực Sang Số Nguyên
Ngoài các hàm Math truyền thống, toán tử Bitwise (|, ~~) là một mẹo nhỏ giúp làm tròn số thập phân nhanh hơn trong một số trường hợp.
const piValue = 3.14159;
// Các hàm Math chuẩn
Math.floor(piValue); // 3 (Làm tròn xuống)
Math.ceil(piValue); // 4 (Làm tròn lên)
Math.round(piValue); // 3 (Làm tròn gần nhất)
piValue.toFixed(2); // "3.14" (Giữ 2 chữ số thập phân)
// Sử dụng toán tử Bitwise OR (|)
console.log(piValue | 0); // 3 (Tương đương Math.floor cho số dương)
console.log(-piValue | 0); // -3
// Sử dụng toán tử Double NOT (~~)
console.log(~~piValue); // 3