24 Đoạn code Javascript (ES6) thông dụng nhất

Ngày đăng: 03/02/2020   -    Cập nhật: 13/10/2020
Javascript là ngôn ngữ hầu như lập trình viên nào cũng cần phải biết. Đặc biệt, với phiên bản ES6, Javascript có những cải tiến tốt hơn.


24 Đoạn code Javascript thông dụng nhất

24 Đoạn code Javascript thông dụng nhất


Trong bài viết này, mình sẽ đưa đến cho bạn một 24 Đoạn code Javascript thông dụng nhất (Dĩ nhiên là trên phiên bản ES6).


Khi làm việc thường xuyên với Javascript, đây là những đoạn code giúp bạn giải quyết các vấn đề thường gặp, mình nghĩ nó sẽ có ích cho người đang học JS và muốn biết ứng dụng của Javascript trong thực tế như thế nào.


Trước khi bắt đầu, hãy chắc chắn bạn đã HỌC JAVASCRIPT CƠ BẢN và có đủ tự tin.


Bởi vì bài viết này không dành cho người mới bắt đầu hoặc gốc JS chưa vững.


Nếu bạn không nằm trong số này thì ... bắt đầu ngay thôi!


1. Làm thế nào để ẩn tất cả các phần tử nào đó với Javascript?



Bạn có thể sử dụng đoạn code JS sau:


const hide = (...el) => [...el].forEach(e => (e.style.display = 'none'));

// Ví dụ
// Ẩn tất cả các phần tử <img> trên trang
hide(document.querySelectorAll('img'));


2. Kiểm tra xem phần tử có chứa class nào đó hay không?



const hasClass = (el, className) => el.classList.contains(className);

// Ví dụ
hasClass(document.querySelector('p.special'), 'special'); // true


3. Toggle Class



const toggleClass = (el, className) => el.classList.toggle(className);

// Ví dụ
toggleClass(document.querySelector('p.special'), 'special'); 
// Thẻ p sẽ không còn class "special" nữa


4. Làm thế nào để lấy được vị trí cuộn của trang hiện tại?



const getScrollPosition = (el = window) => ({
  x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,
  y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop
});

// Ví dụ
getScrollPosition(); // {x: 0, y: 200}


5. Làm thế nào để cuộn mượt mà lên đầu trang?



const scrollToTop = () => {
  const c = document.documentElement.scrollTop || document.body.scrollTop;
  if (c > 0) {
    window.requestAnimationFrame(scrollToTop);
    window.scrollTo(0, c - c / 8);
  }
};

// Ví dụ
scrollToTop();


6. Làm thế nào để kiểm tra xem phần tử cha có chứa phần tử con không?



const elementContains = (parent, child) => parent !== child && parent.contains(child);

// Ví dụ
elementContains(document.querySelector('head'), document.querySelector('title')); 
// true
elementContains(document.querySelector('body'), document.querySelector('body'));
// false


7. Làm thế nào để kiểm tra xem phần tử được chỉ định có hiển thị trong chế độ xem không?



const elementIsVisibleInViewport = (el, partiallyVisible = false) => {
  const { top, left, bottom, right } = el.getBoundingClientRect();
  const { innerHeight, innerWidth } = window;
  return partiallyVisible
    ? ((top > 0 && top < innerHeight) || (bottom > 0 && bottom < innerHeight)) &&
        ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth))
    : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;
};

// Examples
elementIsVisibleInViewport(el); // (Không hiển thị đầy đủ)
elementIsVisibleInViewport(el, true); // (Hiển thị một phần)


8. Làm thế nào để tìm nạp tất cả các hình ảnh trong một phần tử?



const getImages = (el, includeDuplicates = false) => {
  const images = [...el.getElementsByTagName('img')].map(img => img.getAttribute('src'));
  return includeDuplicates ? images : [...new Set(images)];
};

// Ví dụ
getImages(document, true); // ['image1.jpg', 'image2.png', 'image1.png', '...']
getImages(document, false); // ['image1.jpg', 'image2.png', '...']


9. Làm thế nào để biết được thiết bị là thiết bị di động hay máy tính để bàn / máy tính xách tay?



const detectDeviceType = () =>
  /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
    ? 'Mobile'
    : 'Desktop';

// Ví dụ
detectDeviceType(); // "Mobile" hoặc "Desktop"


10. Làm thế nào để có được URL hiện tại?



const currentURL = () => window.location.href;

// Ví dụ
currentURL(); // 'https://niithanoi.edu.com'


11. Làm thế nào để tạo một đối tượng chứa các tham số của URL hiện tại?



const getURLParameters = url =>
  (url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(
    (a, v) => ((a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a),
    {}
  );

// Ví dụ
getURLParameters('http://niithanoi.edu.vn/page?n=NIIT&s=Hanoi'); // {n: 'NIIT', s: 'Hanoi'}
getURLParameters('niithanoi.edu.vn'); // {}


12. Làm thế nào để mã hóa một tập hợp các phần tử form dưới dạng một đối tượng?



const formToObject = form =>
  Array.from(new FormData(form)).reduce(
    (acc, [key, value]) => ({
      ...acc,
      [key]: value
    }),
    {}
  );

// Ví dụ
formToObject(document.querySelector('#form'));
// { email: 'hello@niithanoi.edu.vn', name: 'NIIT ICT Hanoi' }


13. Làm thế nào để lấy một tập các thuộc tính được chỉ định bởi các bộ chọn đã cho từ một đối tượng?



const get = (from, ...selectors) =>
  [...selectors].map(s =>
    s
      .replace(/\[([^\[\]]*)\]/g, '.$1.')
      .split('.')
      .filter(t => t !== '')
      .reduce((prev, cur) => prev && prev[cur], from)
  );
const obj = { selector: { to: { val: 'NIIT' } }, target: [1, 2, { a: 'test' }] };

// Ví dụ
get(obj, 'selector.to.val', 'target[0]', 'target[2].a'); // ['NIIT', 1, 'test']


14. Làm thế nào để gọi một hàm nào đó sau một khoảng thời gian (tính bằng mili giây)?



const delay = (fn, wait, ...args) => setTimeout(fn, wait, ...args);
delay(
  function(text) {
    console.log(text);
  },
  1000,
  'later'
); 

// Logs 'later' sau 1 giây


15. Làm thế nào để kích hoạt một sự kiện cụ thể trên một phần tử nhất định, tùy ý chuyển dữ liệu tùy chỉnh?



const triggerEvent = (el, eventType, detail) =>
  el.dispatchEvent(new CustomEvent(eventType, { detail }));

// Ví dụ
triggerEvent(document.getElementById('myId'), 'click');
triggerEvent(document.getElementById('myId'), 'click', { username: 'NIIT' });


16. Làm thế nào để loại bỏ một even listener từ một phần tử?



const off = (el, evt, fn, opts = false) => el.removeEventListener(evt, fn, opts);

const fn = () => console.log('!');
document.body.addEventListener('click', fn);
off(document.body, 'click', fn);
// Không còn log '!' khi click vào trang


17. Làm thế nào để có được định dạng có thể đọc được của số mili giây đã cho?



const formatDuration = ms => {
  if (ms < 0) ms = -ms;
  const time = {
    day: Math.floor(ms / 86400000),
    hour: Math.floor(ms / 3600000) % 24,
    minute: Math.floor(ms / 60000) % 60,
    second: Math.floor(ms / 1000) % 60,
    millisecond: Math.floor(ms) % 1000
  };
  return Object.entries(time)
    .filter(val => val[1] !== 0)
    .map(([key, val]) => `${val} ${key}${val !== 1 ? 's' : ''}`)
    .join(', ');
};

// Ví dụ
formatDuration(1001); // '1 second, 1 millisecond'
formatDuration(34325055574); // '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'


18. Làm thế nào để tính số ngày giữa 2 ngày đã cho?



const getDaysDiffBetweenDates = (dateInitial, dateFinal) =>
  (dateFinal - dateInitial) / (1000 * 3600 * 24);

// Ví dụ
getDaysDiffBetweenDates(new Date('2020-01-01'), new Date('2020-01-22')); // 21


19. Làm thế nào để thực hiện một yêu cầu GET đến URL nào đó?



const httpGet = (url, callback, err = console.error) => {
  const request = new XMLHttpRequest();
  request.open('GET', url, true);
  request.onload = () => callback(request.responseText);
  request.onerror = () => err(request);
  request.send();
};

httpGet(
  'https://niithanoi.edu.vn/post/1',
  console.log
); 

// Logs: {"userId": 1, "id": 1, "title": "Bài 1", "body": "Nội dung bài 1"}


20. Làm thế nào để thực hiện một yêu cầu POST đến URL nào đó?



const httpPost = (url, data, callback, err = console.error) => {
  const request = new XMLHttpRequest();
  request.open('POST', url, true);
  request.setRequestHeader('Content-type', 'application/json; charset=utf-8');
  request.onload = () => callback(request.responseText);
  request.onerror = () => err(request);
  request.send(data);
};

const newPost = {
  userId: 1,
  id: 1337,
  title: 'Tên bài viết',
  body: 'ABC'
};
const data = JSON.stringify(newPost);
httpPost(
  'https://niithanoi.edu.vn/posts',
  data,
  console.log
); 

// Logs: {"userId": 1, "id": 1337, "title": "Tên bài viết", "body": "ABC"}


21. Làm thế nào để tạo một bộ đếm với phạm vi, bước đếm và thời lượng được chỉ định cho bộ chọn được chỉ định?



const counter = (selector, start, end, step = 1, duration = 2000) => {
  let current = start,
    _step = (end - start) * step < 0 ? -step : step,
    timer = setInterval(() => {
      current += _step;
      document.querySelector(selector).innerHTML = current;
      if (current >= end) document.querySelector(selector).innerHTML = end;
      if (current >= end) clearInterval(timer);
    }, Math.abs(Math.floor(duration / (end - start))));
  return timer;
};

// Ví dụ
counter('#my-id', 1, 1000, 5, 2000); // Tạo bộ đếm thời gian 2 giây cho phần tử id="my-id"


22. Làm thế nào để sao chép một chuỗi vào clipboard?



const copyToClipboard = str => {
  const el = document.createElement('textarea');
  el.value = str;
  el.setAttribute('readonly', '');
  el.style.position = 'absolute';
  el.style.left = '-9999px';
  document.body.appendChild(el);
  const selected =
    document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false;
  el.select();
  document.execCommand('copy');
  document.body.removeChild(el);
  if (selected) {
    document.getSelection().removeAllRanges();
    document.getSelection().addRange(selected);
  }
};

// Ví dụ
copyToClipboard('Chuỗi ví dụ'); // 'Chuỗi ví dụ' đã được copy vào clipboard.


23. Làm thế nào để biết tab của trình duyệt của trang có đang được focus?



const isBrowserTabFocused = () => !document.hidden;

// Ví dụ
isBrowserTabFocused(); // true


24. Làm thế nào để tạo một thư mục nếu nó không tồn tại?



const fs = require('fs');
const createDirIfNotExists = dir => (!fs.existsSync(dir) ? fs.mkdirSync(dir) : undefined);

// Ví dụ
createDirIfNotExists('test'); // Tạo thư mục 'test', nếu nó không tồn tại


Chúc mừng bạn đã biết giải quyết rất nhiều vấn đề thực tế với Javascript (ES6)



Trên đây là 24 Đoạn code Javascript mà bạn sẽ thường xuyên bắt gặp khi làm dự án lập trình web.


Mặc dù, có thể bạn sẽ chưa thể hiểu được hết (nếu bạn mới học Javascript), nhưng, không sao.


Hãy bookmark lại và kiểm tra khi đã có kiến thức thêm một chút nhé.






Source: https://dev.to/madarsbiss/20-modern-es6-snippets-to-solve-practical-js-problems-3n83

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #python #java #php
Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

Lập trình PHP với Laravel Framework

42 giờ
Khóa học Lập trình PHP với Laravel Framework được NIIT - ICT HÀ NỘI xây dựng nhằm hoàn thiện kỹ năng lập trình web các các bạn đã biết Lập trình Web PHP thuần.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate

KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)

48 giờ
Khóa học Angular & TypeScript (Front end) sẽ giúp bạn làm chủ được nền tảng Angular từ đó phát triển được các ứng dụng mạnh mẽ, đa nền tảng.
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!