Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

精心收集的有用的 JavaScript 代码片段,可以让你在 30 秒或更少的时间内理解

License

NotificationsYou must be signed in to change notification settings

justjavac/30-seconds-of-code-zh-CN

 
 

Repository files navigation

Logo

30 seconds of code

精心收集的有用的 JavaScript 代码片段,可以让你在 30 秒或更少的时间内理解。

  • 使用Ctrl +Fcommand +F 快速搜索
  • 欢迎贡献代码,再此之前请阅读contribution guide.

目录

字符串换位组合(可重复)

比如字符串"ab" 的所有换位组合字符串是["ab", "ba"]。而"aab" 的所有换位组合是["aab", "aba", "aab", "aba", "baa", "baa"](允许重复)。

使用递归。

对于给定字符串中的每个字母,为其余字母创建所有的换位组合。使用map() 把当前字母和其余字母的换位组合结合起来,然后用reduce() 把所有换位组合放到一个数组里。递归结束条件是字符串的length 属性等于21

constanagrams=s=>{if(s.length<=2)returns.length===2 ?[s,s[1]+s[0]] :[s];returns.split('').reduce((a,l,i)=>{anagrams(s.slice(0,i)+s.slice(i+1)).map(v=>a.push(l+v));returna;},[]);}

Average of array of numbers

Usereduce() to add each value to an accumulator, initialized with a value of0, divide by thelength of the array.

constaverage=arr=>arr.reduce((acc,val)=>acc+val,0)/arr.length;

Capitalize first letter of every word

Usereplace() to match the first character of each word andtoUpperCase() to capitalize it.

constcapitalizeEveryWord=str=>str.replace(/\b[a-z]/g,char=>char.toUpperCase());

Capitalize first letter

Useslice(0,1) andtoUpperCase() to capitalize first letter,slice(1) to get the rest of the string.Omit thelowerRest parameter to keep the rest of the string intact, or set it totrue to convert to lower case.

constcapitalize=(str,lowerRest=false)=>str.slice(0,1).toUpperCase()+(lowerRest?str.slice(1).toLowerCase() :str.slice(1));

Count occurrences of a value in array

Usereduce() to increment a counter each time you encounter the specific value inside the array.

constcountOccurrences=(arr,value)=>arr.reduce((a,v)=>v===value ?a+1 :a+0,0);

Current URL

Usewindow.location.href to get current URL.

constcurrentUrl=_=>window.location.href;

Curry

Use recursion.If the number of provided arguments (args) is sufficient, call the passed functionf.Otherwise return a curried functionf that expects the rest of the arguments.

constcurry=f=>(...args)=>args.length>=f.length ?f(...args) :(...otherArgs)=>curry(f)(...args, ...otherArgs)

Difference between arrays

Usefilter() to remove values that are part ofvalues, determined usingincludes().

constdifference=(arr,values)=>arr.filter(v=>!values.includes(v));

Distance between two points

UseMath.hypot() to calculate the Euclidean distance between two points.

constdistance=(x0,y0,x1,y1)=>Math.hypot(x1-x0,y1-y0);

Escape regular expression

Usereplace() to escape special characters.

constescapeRegExp=s=>s.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');}

Even or odd number

UseMath.abs() to extend logic to negative numbers, check using the modulo (%) operator.Returntrue if the number is even,false if the number is odd.

constisEven=num=>Math.abs(num)%2===0;

Factorial

Use recursion.Ifn is less than or equal to1, return1.Otherwise, return the product ofn and the factorial ofn - 1.

constfactorial=n=>n<=1 ?1 :n*factorial(n-1)

Fibonacci array generator

Create an empty array of the specific length, initializing the first two values (0 and1).Usereduce() to add values into the array, using the sum of the last two values, except for the first two.

constfibonacci=n=>Array.apply(null,[0,1].concat(Array(n-2))).reduce((acc,val,i)=>{acc.push(i>1 ?acc[i-1]+acc[i-2] :val);returnacc;},[]);

Filter out non-unique values in an array

UseArray.filter() for an array containing only the unique values.

constunique=arr=>arr.filter(i=>arr.indexOf(i)===arr.lastIndexOf(i));// unique([1,2,2,3,4,4,5]) -> [1,3,5]

Flatten array

Use recursion.Usereduce() to get all elements that are not arrays, flatten each element that is an array.

constflatten=arr=>arr.reduce((a,v)=>a.concat(Array.isArray(v) ?flatten(v) :v),[]);

et scroll position

UsepageXOffset andpageYOffset if they are defined, otherwisescrollLeft andscrollTop.You can omitel to use a default value ofwindow.

constgetScrollPos=(el=window)=>({x:(el.pageXOffset!==undefined) ?el.pageXOffset :el.scrollLeft,y:(el.pageYOffset!==undefined) ?el.pageYOffset :el.scrollTop});// getScrollPos() -> {x: 0, y: 200}

Greatest common divisor (GCD)

Use recursion.Base case is wheny equals0. In this case, returnx.Otherwise, return the GCD ofy and the remainder of the divisionx/y.

constgcd=(x,y)=>!y ?x :gcd(y,x%y);

Head of list

Returnarr[0].

consthead=arr=>arr[0];

Initial of list

Returnarr.slice(0,-1).

constinitial=arr=>arr.slice(0,-1);

Initialize array with range

UseArray(end-start) to create an array of the desired length,map() to fill with the desired values in a range.You can omitstart to use a default value of0.

constinitializeArrayRange=(end,start=0)=>Array.apply(null,Array(end-start)).map((v,i)=>i+start);

Initialize array with values

UseArray(n) to create an array of the desired length,fill(v) to fill it with the desired values.You can omitv to use a default value of0.

constinitializeArray=(n,v=0)=>Array(n).fill(v);

Last of list

Returnarr.slice(-1)[0].

constlast=arr=>arr.slice(-1)[0];

Measure time taken by function

Useperformance.now() to get start and end time for the function,console.log() the time taken.First argument is the function name, subsequent arguments are passed to the function.

consttimeTaken=(f,...args)=>{vart0=performance.now(),r=f(...args);console.log(performance.now()-t0);returnr;}

Object from key-value pairs

Usemap() to create objects for each key-value pair, combine withObject.assign().

constobjectFromPairs=arr=>Object.assign(...arr.map(v=>{return{[v[0]] :v[1]};}));

Powerset

Usereduce() combined withmap() to iterate over elements and combine into an array containing all combinations.

constpowerset=arr=>arr.reduce((a,v)=>a.concat(a.map(r=>[v].concat(r))),[[]]);

Random number in range

UseMath.random() to generate a random value, map it to the desired range using multiplication.

constrandomInRange=(min,max)=>Math.random()*(max-min)+min;

Randomize order of array

Usesort() to reorder elements, utilizingMath.random() to randomize the sorting.

constrandomizeOrder=arr=>arr.sort((a,b)=>Math.random()>=0.5 ?-1 :1)

Redirect to URL

Usewindow.location.href orwindow.location.replace() to redirect tourl.Pass a second argument to simulate a link click (true - default) or an HTTP redirect (false).

constredirect=(url,asLink=true)=>asLink ?window.location.href=url :window.location.replace(url);

Reverse a string

Use array destructuring andArray.reverse() to reverse the order of the characters in the string.Combine characters to get a string usingjoin('').

constreverseString=str=>[...str].reverse().join('');

RGB to hexadecimal

Convert each value to a hexadecimal string, usingtoString(16), thenpadStart(2,'0') to get a 2-digit hexadecimal value.Combine values usingjoin('').

constrgbToHex=(r,g,b)=>[r,g,b].map(v=>v.toString(16).padStart(2,'0')).join('');

Scroll to top

Get distance from top usingdocument.documentElement.scrollTop ordocument.body.scrollTop.Scroll by a fraction of the distance from top. Usewindow.requestAnimationFrame() to animate the scrolling.

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

Similarity between arrays

Usefilter() to remove values that are not part ofvalues, determined usingincludes().

constdifference=(arr,values)=>arr.filter(v=>values.includes(v));

Sort characters in string (alphabetical)

Split the string usingsplit(''),sort() utilizinglocaleCompare(), recombine usingjoin('').

constsortCharactersInString=str=>str.split('').sort((a,b)=>a.localeCompare(b)).join('');

Sum of array of numbers

Usereduce() to add each value to an accumulator, initialized with a value of0.

constsum=arr=>arr.reduce((acc,val)=>acc+val,0);

Swap values of two variables

Use array destructuring to swap values between two variables.

[varA,varB]=[varB,varA];

Tail of list

Returnarr.slice(1).

consttail=arr=>arr.slice(1);

Unique values of array

Use ES6Set and the...rest operator to discard all duplicated values.

constunique=arr=>[...newSet(arr)];// unique([1,2,2,3,4,4,5]) -> [1,2,3,4,5]

URL parameters

Usematch() with an appropriate regular expression to get all key-value pairs,map() them appropriately.Combine all key-value pairs into a single object usingObject.assign() and the spread operator (...).Passlocation.search as the argument to apply to the currenturl.

constgetUrlParameters=url=>Object.assign(...url.match(/([^?=&]+)(=([^&]*))?/g).map(m=>{[f,v]=m.split('=');return{[f]:v}}));

UUID generator

Usecrypto API to generate a UUID, compliant withRFC4122 version 4.

constuuid=_=>([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,c=>(c^crypto.getRandomValues(newUint8Array(1))[0]&15>>c/4).toString(16))

Validate number

Use!isNaN in combination withparseFloat() to check if the argument is a number.UseisFinite() to check if the number is finite.

constvalidateNumber=n=>!isNaN(parseFloat(n))&&isFinite(n);

Credits

Icons made bySmashicons fromwww.flaticon.com is licensed byCC 3.0 BY.

About

精心收集的有用的 JavaScript 代码片段,可以让你在 30 秒或更少的时间内理解

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript100.0%

[8]ページ先頭

©2009-2025 Movatter.jp