24 Modern ES6 Code Snippets to Solve Practical JavaScript Problems
This article presents a curated collection of 24 practical ES6 code snippets that address common front‑end challenges such as DOM manipulation, event handling, network requests, timing utilities, and file system operations, providing ready‑to‑use solutions for developers.
This article, originally published on the "前端之巅" public account, compiles 24 useful ES6 code snippets that solve a variety of practical JavaScript problems encountered in front‑end development.
1. How to hide all specified elements?
const hide = (...el) => [...el].forEach(e => (e.style.display = 'none'));
// Example
hide(document.querySelectorAll('img')); // hides all
elements2. How to check if an element has a specific class?
const hasClass = (el, className) => el.classList.contains(className);
// Example
hasClass(document.querySelector('p.special'), 'special'); // true3. How to toggle a class on an element?
const toggleClass = (el, className) => el.classList.toggle(className);
// Example
toggleClass(document.querySelector('p.special'), 'special'); // class removed4. How to get the current scroll position of the page?
const getScrollPosition = (el = window) => ({
x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,
y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop
});
// Example
getScrollPosition(); // {x: 0, y: 200}5. How to smoothly scroll to the top of the page?
const scrollToTop = () => {
const c = document.documentElement.scrollTop || document.body.scrollTop;
if (c > 0) {
window.requestAnimationFrame(scrollToTop);
window.scrollTo(0, c - c / 8);
}
};
// Example
scrollToTop();6. How to determine whether a parent element contains a child element?
const elementContains = (parent, child) => parent !== child && parent.contains(child);
// Examples
elementContains(document.querySelector('head'), document.querySelector('title')); // true
elementContains(document.querySelector('body'), document.querySelector('body')); // false7. How to check if an element is visible in the viewport?
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); // not fully visible
elementIsVisibleInViewport(el, true); // partially visible8. How to get all images inside an element?
const getImages = (el, includeDuplicates = false) => {
const images = [...el.getElementsByTagName('img')].map(img => img.getAttribute('src'));
return includeDuplicates ? images : [...new Set(images)];
};
// Examples
getImages(document, true); // all images including duplicates
getImages(document, false); // unique image sources9. How to detect whether the device is mobile or desktop?
const detectDeviceType = () =>
/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
? 'Mobile'
: 'Desktop';
// Example
detectDeviceType(); // "Mobile" or "Desktop"10. How to get the current URL?
const currentURL = () => window.location.href;
// Example
currentURL(); // "https://example.com"11. How to create an object from URL query parameters?
const getURLParameters = url =>
(url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(
(a, v) => ((a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a),
{}
);
// Examples
getURLParameters('http://url.com/page?n=Adam&s=Smith'); // {n: 'Adam', s: 'Smith'}
getURLParameters('google.com'); // {}12. How to encode a group of form elements into an object?
const formToObject = form =>
Array.from(new FormData(form)).reduce(
(acc, [key, value]) => ({ ...acc, [key]: value }),
{}
);
// Example
formToObject(document.querySelector('#form')); // { email: '[email protected]', name: 'Test Name' }13. How to retrieve a set of properties from an object using a selector string?
const get = (from, ...selectors) =>
[...selectors].map(s =>
s
.replace(/\[([^\[\]]*)\]/g, '.$1')
.split('.')
.filter(t => t !== '')
.reduce((prev, cur) => prev && prev[cur], from)
);
// Example
const obj = { selector: { to: { val: 'val to select' } }, target: [1, 2, { a: 'test' }] };
get(obj, 'selector.to.val', 'target[0]', 'target[2].a'); // ['val to select', 1, 'test']14. How to delay execution of a function by a given number of milliseconds?
const delay = (fn, wait, ...args) => setTimeout(fn, wait, ...args);
// Example
delay(function(text) { console.log(text); }, 1000, 'later'); // logs "later" after 1 second15. How to trigger a specific event on an element with optional custom data?
const triggerEvent = (el, eventType, detail) =>
el.dispatchEvent(new CustomEvent(eventType, { detail }));
// Examples
triggerEvent(document.getElementById('myId'), 'click');
triggerEvent(document.getElementById('myId'), 'click', { username: 'bob' });16. How to remove an event listener from an element?
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); // listener removed17. How to format a duration given in milliseconds into a readable string?
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(', ');
};
// Examples
formatDuration(1001); // "1 second, 1 millisecond"
formatDuration(34325055574); // "397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds"18. How to calculate the number of days between two dates?
const getDaysDiffBetweenDates = (dateInitial, dateFinal) =>
(dateFinal - dateInitial) / (1000 * 3600 * 24);
// Example
getDaysDiffBetweenDates(new Date('2017-12-13'), new Date('2017-12-22')); // 919. How to perform a GET request to a given URL?
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();
};
// Example
httpGet('https://jsonplaceholder.typicode.com/posts/1', console.log);20. How to perform a POST request to a given URL?
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: 'Foo', body: 'bar bar bar' };
const data = JSON.stringify(newPost);
httpPost('https://jsonplaceholder.typicode.com/posts', data, console.log);
// Logs created post21. How to create a timer for a selector with a range, step, and duration?
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;
};
// Example
counter('#my-id', 1, 1000, 5, 2000); // 2‑second counter22. How to copy a string to the clipboard?
const copyToClipboard = str => {
const el = document.createElement('textarea');
el.value = str;
el.setAttribute('readonly', '');
el.style.position = 'absolute';
el.style.left = '-9999px';
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);
}
};
// Example
copyToClipboard('Lorem ipsum'); // copies text23. How to determine if the browser tab is currently focused?
const isBrowserTabFocused = () => !document.hidden;
// Example
isBrowserTabFocused(); // true24. How to create a directory if it does not exist?
const fs = require('fs');
const createDirIfNotExists = dir => (!fs.existsSync(dir) ? fs.mkdirSync(dir) : undefined);
// Example
createDirIfNotExists('test'); // creates "test" directory if missingThese snippets provide quick, reusable solutions for everyday JavaScript tasks, helping developers write cleaner and more efficient code.
Sohu Tech Products
A knowledge-sharing platform for Sohu's technology products. As a leading Chinese internet brand with media, video, search, and gaming services and over 700 million users, Sohu continuously drives tech innovation and practice. We’ll share practical insights and tech news here.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.