Nội dung bài viết
Video học lập trình mỗi ngày
JavaScript utilities - Anh em dev nào cũng có một file này, như một bí kíp vậy, được sử dụng từ project này qua project khác. Trong bài post này, hãy để tipjs share thêm một số bí kíp khác giúp chúng ta hoàn thành file utilities js một cách hoàn hảo hơn, chỉ mới một line code!
Học được gì sau bài viết này
- Viết code một cách sạch sẽ
- Tham khảo một số code mẫu
- Mẹo này có thể chưa tốt đối với một số trường hợp
ARRAY - single line of code
Dưới đây là một số code mẫu chỉ giải quyết trong vòng một line code. Có thể nó không phù hợp với tất cả ngữ cảnh hay tình huống, nhưng nó khá tốt cho những ai muốn được học hỏi thêm về khả năng viết code của mình. Cải thiện được nếu bạn có thể. Nhưng tipjs vẫn có một câu nói thế này:
"Một người code giỏi không có nghĩa là code của họ chạy ổn và hiệu suất cao. Mà trong đó còn có thể truyền đạt lại cho người khác một cách dễ dàng".
Vì lẽ đó nên cẩn thận, bởi người sau có thể không hiểu code của bạn, cho dù là ngắn nhất.
Notes: Một số thủ thuật làm việc với Array JavaScript
Check if all items in an array are equal
const areEqual = arr => arr.length > 0 && arr.every(item => item === arr[0]); // areEqual([1, 2, 3, 4]) === false // areEqual(['hello', 'hello', 'hello']) === true
Check if an object is an array
const isArray = obj => Array.isArray(obj);
Convert an array of strings to numbers
const toNumbers = arr => arr.map(Number); // Or const toNumbers = arr => arr.map(x => +x); // toNumbers(['2', '3', '4']) returns [2, 3, 4]
Create an array of cumulative sum
const accumulate = arr => arr.map((sum => value => sum += value)(0)); // Or const accumulate = arr => arr.reduce((a, b, i) => i === 0 ? [b] : [...a, b + a[i - 1]], []); // Or const accumulate = arr => arr.reduce((a, b, i) => i === 0 ? [b] : [...a, b + a[i - 1]], 0); /* accumulate([1, 2, 3, 4]) === [1, 3, 6, 10] // 1 = 1 // 1 + 2 = 3 // 1 + 2 + 3 = 6 // 1 + 2 + 3 + 4 = 10 */
Create an array of numbers in the given range
const range = (min, max) => [...Array(max - min + 1).keys()].map(i => i + min); // range(5, 10) === [5, 6, 7, 8, 9, 10]
Empty an array
const empty = arr => arr.length = 0; // Or arr = [];
Find the length of the longest string in an array
const findLongest = words => Math.max(...(words.map(el => el.length))); // findLongest(['always','look','on','the','bright','side','of','life']) === 6;
Find the maximum item of an array
const max = arr => Math.max(...arr);
Find the minimum item of an array
const min = arr => Math.min(...arr);
Flatten an array
const flat = arr => arr.reduce((a, b) => Array.isArray(b) ? [...a, ...flat(b)] : [...a, b], []); // Or // See the browser compatibility at https://caniuse.com/#feat=array-flat const flat = arr => arr.flat(); // flat(['cat', ['lion', 'tiger']]) returns ['cat', 'lion', 'tiger']
Get a random item from an array
const randomItem = arr => arr[(Math.random() * arr.length) | 0];
Get the average of an array
const average = arr => arr.reduce((a, b) => a + b, 0) / arr.length;
Get the sum of array of numbers
const sum = arr => arr.reduce((a, b) => a + b, 0);
Get the unique values of an array
const unique = arr => [...new Set(arr)]; // Or const unique = arr => arr.filter((el, i, array) => array.indexOf(el) === i);
Merge two arrays
// Merge but don't remove the duplications const merge = (a, b) => a.concat(b); // Or const merge = (a, b) => [...a, ...b]; // Merge and remove the duplications const merge = [...new Set(a.concat(b))]; // Or const merge = [...new Set([...a, ...b])];
DATETIME - single line of code
Còn nữa... Resource: reddit