Skip to content

Short JavaScript code snippets

License

Notifications You must be signed in to change notification settings

gmerabishvili/JavaScript-snippets

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 

Repository files navigation

JavaScript-snippets

Click ⭐ if you like the project. Pull Request are highly appreciated. Follow us on Facebook

Table of Contents

No.Questions
1Generate a random number in a given range
2Find the difference between two arrays
3Convert truthy/falsy to boolean(true/false)
4Repeat a string
5Check how long an operation takes
6Two ways to remove an item in a specific in an array
7Did you know you can flat an array?
8Get unique values in an array
9Copy Text to Clipboard
10Nested Destructuring
11URLSearchParams
12Count elements in an array
13Aliases with JavaScript Destructuring
14The Object.is() method determines whether two values are the same value
15Freeze an object
16Printing Object keys and values
17Capture the right click event
18In HTML5, you can tell the browser when to run your JavaScript code
19Nullish coalescing operator
20Optional chaining
21globalThis
22The second argument of JSON.stringify lets you cherry-pick 🍒 keys to serialize.
23Fire an event listener only once.
24Vanilla JS toggle
25Check if a string is a valid JSON
26getBoundingClientRect
27Check if a node is in the viewport
28Notify when element size is changed
29Detect if Browser Tab is in the view
30Private class methods and fields
31Preventing paste into an input field
32The void operator
33replaceAll
34Required Function Params
35Get input value as a number
36reduceRight
37Abort Fetch
38How to change the value of an object which is inside an array
39Shuffle Array

⬆ Back to Top

How to generate a random number in a given range

// Returns a random number(float) between min (inclusive) and max (exclusive) constgetRandomNumber=(min,max)=>Math.random()*(max-min)+min;getRandomNumber(2,10)// Returns a random number(int) between min (inclusive) and max (inclusive)constgetRandomNumberInclusive=(min,max)=>{min=Math.ceil(min);max=Math.floor(max);returnMath.floor(Math.random()*(max-min+1))+min;}getRandomNumberInclusive(2,10);

⬆ Back to Top

How to find the difference between two arrays

constfirstArr=[5,2,1];constsecondArr=[1,2,3,4,5];constdiff=[ ...secondArr.filter(x=>!firstArr.includes(x)), ...firstArr.filter(x=>!secondArr.includes(x))];console.log('diff',diff)//[3,4]functionarrayDiff(a,b){return[ ...a.filter(x=>b.indexOf(x)===-1), ...b.filter(x=>a.indexOf(x)===-1)]}console.log('arrayDiff',arrayDiff(firstArr,secondArr))//[3,4]constdifference=(a,b)=>{constsetA=newSet(a);constsetB=newSet(b);return[ ...a.filter(x=>!setB.has(x)), ...b.filter(x=>!setA.has(x))]};difference(firstArr,secondArr);//[3,4]console.log('difference',difference(firstArr,secondArr))

⬆ Back to Top

Convert truthy falsy to boolean

constmyVar=null;constmySecondVar=1;console.log(Boolean(myVar))// falseconsole.log(!!myVar)// falseconsole.log(Boolean(mySecondVar))// trueconsole.log(!!mySecondVar)// true

⬆ Back to Top

Repeat a string

letaliens='';for(leti=0;i<6;i++){aliens+='👽'}//👽👽👽👽👽👽Array(6).join('👽')//👽👽👽👽👽👽'👽'.repeat(6)//👽👽👽👽👽👽

⬆ Back to Top

Check how long an operation takes

//The performance.now() method returns a DOMHighResTimeStamp, measured in milliseconds.//performance.now() is relative to page load and more precise in orders of magnitude. //Use cases include benchmarking and other cases where a high-resolution time is required //such as media (gaming, audio, video, //etc.)varstartTime=performance.now();doSomething();constendTime=performance.now();console.log("this doSomething took "+(endTime-startTime)+" milliseconds.");

⬆ Back to Top

Two ways to remove an item in a specific in an array

//Mutating wayconstmuatatedArray=['a','b','c','d','e'];muatatedArray.splice(2,1)console.log(muatatedArray)//['a','b','d','e']//Non-mutating wayconstnonMuatatedArray=['a','b','c','d','e'];constnewArray=nonMuatatedArray.filter((item,index)=>!(index===2));console.log(newArray)//['a','b','d','e']

⬆ Back to Top

Did you know you can flat an array

constmyArray=[2,3,[4,5],[7,7,[8,9,[1,1]]]];myArray.flat()// [2, 3, 4, 5 ,7,7, [8, 9, [1, 1]]]myArray.flat(1)// [2, 3, 4, 5 ,7,7, [8, 9, [1, 1]]]myArray.flat(2)// [2, 3, 4, 5 ,7,7, 8, 9, [1, 1]]//if you dont know the depth of the array you can use infinitymyArray.flat(infinity)// [2, 3, 4, 5 ,7,7, 8, 9, 1, 1];

⬆ Back to Top

Get unique values in an array

constnumbers=[1,1,3,2,5,3,4,7,7,7,8];//Ex1constunieqNumbers=numbers.filter((v,i,a)=>a.indexOf(v)===i)console.log(unieqNumbers)//[1,3,2,5,4,7,8]//Ex2constunieqNumbers2=Array.from(newSet(numbers))console.log(unieqNumbers2)//[1,3,2,5,4,7,8]//Ex3constunieqNumbers3=[...newSet(numbers)]console.log(unieqNumbers3)//[1,3,2,5,4,7,8]//EX4 lodashconstunieqNumbers4=_.uniq(numbers)console.log(unieqNumbers4)//[1,3,2,5,4,7,8]

⬆ Back to Top

Copy Text to Clipboard

functioncopyToClipboard(){constcopyText=document.getElementById("myInput");copyText.select();document.execCommand("copy");}//new APIfunctioncopyToClipboard(){navigator.clipboard.writeText(document.querySelector('#myInput').value)}

⬆ Back to Top

Nested Destructuring

constuser={id: 459,name: 'JS snippets',age:29,education:{degree: 'Masters'}}const{education : { degree }}=user;console.log(degree)//Masters

⬆ Back to Top

URLSearchParams

//The URLSearchParams interface defines utility methods to work with the query string of a URL.consturlParams=newURLSearchParams("?post=1234&action=edit");console.log(urlParams.has('post'));// trueconsole.log(urlParams.get('action'));// "edit"console.log(urlParams.getAll('action'));// ["edit"]console.log(urlParams.toString());// "?post=1234&action=edit"console.log(urlParams.append('active','1'));// "?post=1234&action=edit&active=1"

⬆ Back to Top

Count elements in an array

constmyFruits=['Apple','Orange','Mango','Banana','Apple','Apple','Mango']//first optionconstcountMyFruits=myFruits.reduce((countFruits,fruit)=>{countFruits[fruit]=(countFruits[fruit]||0)+1;returncountFruits},{})console.log(countMyFruits)// { Apple:3, Banana:1, Mango:2, Orange:1 }//seconf optionconstfruitsCounter={};for(constfruitofmyFruits){fruitsCounter[fruit]=fruitsCounter[fruit] ? fruitsCounter[fruit]+1 :1;}console.log(fruitsCounter)// { Apple:3, Banana:1, Mango:2, Orange:1 }

⬆ Back to Top

Aliases with JavaScript Destructuring

//There are cases where you want the destructured variable to have a different name than the property nameconstobj={name: "JSsnippets"};// Grabs obj.name as { pageName }const{name: pageName}=obj;//log our aliasconsole.log(pageName)// JSsnippets

⬆ Back to Top

The Object.is() method determines whether two values are the same value

Object.is('foo','foo');// trueObject.is(null,null);// trueObject.is(Nan,Nan);// true 😱constfoo={a: 1};constbar={a: 1};Object.is(foo,foo);// trueObject.is(foo,bar);// false

⬆ Back to Top

Freeze an object

constobj={name: "JSsnippets",age:29,address:{street : 'JS'}};constfrozenObject=Object.freeze(obj);frozenObject.name='weLoveJS';// Uncaught TypeError//Although, we still can change a property’s value if it’s an object:frozenObject.address.street='React';// no error, new value is setdeletefrozenObject.name// Cannot delete property 'name' of #<Object>//We can check if an object is frozen by usingObject.isFrozen(obj)//true

⬆ Back to Top

Printing Object keys and values

constobj={name: "JSsnippets",age:29,};//Object.entries() method is used to return an array consisting of enumerable property //[key, value] pairs of the object which are passed as the parameter.for(let[key,value]ofObject.entries(obj)){console.log(`${key}: ${value}`)}//expected output:// "name: Jssnippets"// "age: 29"// order is not guaranteed

⬆ Back to Top

Capture the right click event

window.oncontextmenu=()=>{console.log('right click');returnfalse// cancel default menu}//orwindow.addEventListener('contextmenu',()=>{console.log('right click');returnfalse// cancel default menu},false)

⬆ Back to Top

In HTML5, you can tell the browser when to run your JavaScript code

//Without async or defer, browser will run your script immediately, before rendering the elements that's below your script tag.<scriptsrc="myscript.js"></script>//With async (asynchronous), browser will continue to load the HTML page and render it while the browser load and execute the script at the same time.//Async is more useful when you really don't care when the script loads and nothing else that is user dependent depends upon that script loading.(for scripts likes Google analytics)<scriptasyncsrc="myscript.js"></script> //With defer, browser will run your script when the page finished parsing. (not necessary finishing downloading all image files. <scriptdefersrc="myscript.js"></script>

⬆ Back to Top

Nullish coalescing operator

// an equality check against nullary values (e.g. null or undefined). Whenever the expression to the left of the ?? operator evaluates to either //undefined or null, the value defined to the right will be returned.constfoo=undefined??'default string';console.log(foo);// expected output: "default string"constage=0??30;console.log(age);// expected output: "0"

⬆ Back to Top

Optional chaining

constcar={}constcarColor=car.name.colorconsole.log(carColor);// error- "Uncaught TypeError: Cannot read property 'carColor' of undefined //In JavaScript, you can first check if an object exists, and then try to get one of its properties, like this:constcarColor=car&&car.name&&car.name.color;console.log(carColor);//undefined- no error//Now this new optional chaining operator will let us be even more fancy:constnewCarColor=car?.name?.color;console.log(newCarColor)//undefined- no error//You can use this syntax today using @babel/plugin-proposal-optional-chaining

⬆ Back to Top

globalThis

AccessingtheglobalpropertyinJavaScripthasalwaysposedsomedifficulty.Thisisbecausedifferentplatformshavedifferentwaystoaccessit.Client-sideJavaScriptuseswindoworselfNode.jsusesglobalWebworkersuseselfTheglobalThispropertyprovidesastandardwayofaccessingtheglobal'this'valueacrossenvironments.youcanaccesstheglobalobjectinaconsistentmannerwithouthavingtoknowwhichenvironmentthecodeisbeingrunin.console.log(globalThis)//get the global this depends on your environment

⬆ Back to Top

The second argument of JSON.stringify lets you cherry-pick 🍒 keys to serialize.

constuser={id: 459,name: 'JS snippets',age:29,education:{degree: 'Masters'}}JSON.stringify(user,[name,age],2)/*returns{ "name": "JS snippets", "age": 29}*/

⬆ Back to Top

Fire an event listener only once

constel=document.getElementById("btn");functionmyClickHandler(){console.log('this click will only fire once')}el.addEventListener('click',myClickHandler,{once: true,});

⬆ Back to Top

Vanilla JS toggle

constspan=document.querySelector("span");letclasses=span.classList;span.addEventListener("click",function(){letresult=classes.toggle("active");if(result){console.log("active class was added");}else{console.log("active class was removed");}});

⬆ Back to Top

Check if a string is a valid JSON

functionisJson(str){try{JSON.parse(str);}catch(e){//the json is not okreturnfalse;}//the json is okreturntrue;}

⬆ Back to Top

getBoundingClientRect

//getBoundingClientRect provides you with important pieces of data about an//HTML element’s size and positioning.constbodyBounderies=document.body.getBoundingClientRect();// => {// top: Number,// left: Number,// right: Number,// bottom: Number,// x: Number,// y: Number,// width: Number,// height: Number,// }

⬆ Back to Top

Check if a node is in the viewport

bonus: add/remove animation depending if an image is in the viewport https://codepen.io/JSsnippets/pen/PoqrjEY

constimage=document.querySelector('.animate-me');observer=newIntersectionObserver((entries)=>{const[myImg]=entries;if(myImg.intersectionRatio>0){myImg.target.classList.add('fancy');}else{myImg.target.classList.remove('fancy');}});observer.observe(image);

⬆ Back to Top

Notify when element size is changed

see our codepen: https://codepen.io/JSsnippets/pen/dyYoYVX

constfoo=document.getElementById("foo");constobserver=newResizeObserver((entries)=>{for(letentryofentries){constcr=entry.contentRect;console.log=`Size: ${cr.width}px X ${cr.height}px`;}});observer.observe(foo);

⬆ Back to Top

Detect if Browser Tab is in the view

play/pause video accordingly see our codepen: https://codepen.io/JSsnippets/pen/gOapPzq

constvideo=document.getElementById("my-video");constonVisibilitychange=()=>{returndocument.hidden ? video.pause() : video.play();}document.addEventListener("visibilitychange",onVisibilitychange)

⬆ Back to Top

Private class methods and fields

classStudents{ #name;constructor(){this.#name ="JS snippets";} #privateMethod(){return'Come and learn Js with us';}getPrivateMessage(){returnthis.#privateMethod();}}constinstance=newSomething();console.log(instance.name);//=> undefinedconsole.log(instance.privateMethod);//=> undefinedconsole.log(instance.getPrivateMessage());//=> Come and learn Js with us

⬆ Back to Top

Preventing paste into an input field

see our codepen: https://codepen.io/JSsnippets/pen/qBbyMoJ

constpasteBox=document.getElementById("paste-no-event");pasteBox.onpaste=(e)=>{e.preventDefault();returnfalse;};

⬆ Back to Top

The void operator

The void operator evaluates the given expression and then returns undefined.

void0;//returns undefinedvoid(0);//returns undefinedvoid{};//returns undefinedvoid "JSsnippets; //returns undefined void(0);//returns undefinedvoid(2=='2');//returns undefinedvoidanyfunction();//returns undefined

⬆ Back to Top

replaceAll

the method string.replaceAll(search, replaceWith) replaces all appearances of search string with replaceWith.

conststr='this is a JSsnippets example';constupdatedStr=str.replace('example','snippet');// 'this is a JSsnippets snippet'Thetrickypartisthatreplacemethodreplacesonlytheveryfirstmatchofthesubstringwehave passed: conststr='this is a JSsnippets example and examples are great';constupdatedStr=str.replace('example','snippet');//'this is a JSsnippets snippet and examples are great'Inordertogothroughthis,weneedtouseaglobalregexpinstead: conststr='this is a JSsnippets example and examples are great';constupdatedStr=str.replace(/example/g,'snippet');//'this is a JSsnippets snippet and snippets are greatr'butnowwehavenewfriendintown,replaceAllconststr='this is a JSsnippets example and examples are great';constupdatedStr=str.replaceAll('example','snippet');//'this is a JSsnippets snippet and snippets are greatr'

⬆ Back to Top

Required Function Params

Expanding on the default parameter technique, we can mark a parameter as mandatory

constisRequired=()=>{thrownewError('This is a mandatory parameter.');}constgetPage=(pageName='Jssnippets',url=isRequired())=>{return`${pageName}${url}`;}console.log(getPage());//In the above code, url will be undefined and that will try to set the default value for it which is the isRequired() function. It will throw an error as,//Uncaught error: This is a mandatory parameter.//at isRequired

⬆ Back to Top

Get input value as a number

<inputtype="number"id="JSsnippets"onkeyup="checkMyType(event)"/>functioncheckMyType(event){console.log(typeofevent.target.value)// stringconsole.log(typeofevent.target.valueAsNumber)// number}

⬆ Back to Top

reduceRight

constarr=["a","b","c","d","e"]constreduceArray=arr.reduce((acc,current)=>{returnacc+current},"")//return abcdeconstreduceRightArray=arr.reduceRight((acc,current)=>{returnacc+current},"")//return edcba

⬆ Back to Top

Abort Fetch

//HTML<buttonid="download">Download</button><buttonid="abort">Abort</button>//JSletcontroller;document.querySelector('#download').addEventListener('click',()=>{controller=newAbortController();constsignal=controller.signal;fetch('https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4',{signal}).then(()=>console.log('done'));});document.querySelector('#abort').addEventListener('click',function(){controller.abort();});

⬆ Back to Top

How to change the value of an object which is inside an array

conststate=[{userId: 1,name: "JSSnippets",isOwner: false,},{userId: 2,name: "React",isOwner: false,},{userId: 3,name: "Vue",isOwner: false,},{userId: 4,name: "Angular",isOwner: false,},];constnewState=state.map((obj)=>obj.name==="JSSnippets" ? { ...obj,isOwner: true} : obj);

⬆ Back to Top

Shuffle Array

// Three quick steps to shuffle an array in Javascript: Map to a random number, sort on that and map the object back! shuffleArray=anArray=>anArray.map(a=>[Math.random(),a]).sort((a,b)=>a[0]-b[0]).map(a=>a[1]);console.log('Shuffled array',shuffleArray([1,2,3,4,5,6,7,8,9,10]))// Returns shuffled array

About

Short JavaScript code snippets

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
close