1. 程式人生 > 程式設計 >15個值得收藏的JavaScript函式

15個值得收藏的JavaScript函式

目錄
  • 1、逆轉數字
  • 2、獲取陣列中最大的n個數字
  • 3、計算階乘
  • 4、判斷當前執行環境是否為瀏覽器
  • 5、判斷當前執行環境是否為Node.
  • 6、獲取url上的引數
  • 7、rgb(x,x,x)顏色表達方式格式轉換成物件格式
  • 8、轉義字串以在 HTML 中使用
  • 9、Unescapes 轉義 HTML 字元
  • 10、生成指定範圍內的隨機整數
  • 11、將波浪號路徑轉換為絕對路徑
  • 12、獲取不帶任何引數或片段識別符號的當前 URL
  • 13、以位元組為單位返回字串的長度
  • 14、隨機獲取陣列中元素
  • 15、檢查字串是否為有效的 JSON

1、逆轉數字

const reverseNumber = n =>
  parseFloat(`${n}`.split('').reverse().join('')) * Math.sign(n);

reverseNumber(123); // 321
reverseNumber(-200); // -2
reverseNumber(32.4); // 4.23
reverseNumber(-32.4); // -4.23

2、獲取陣列中最大的n個數字

const maxFromArray = (array,number = 1) => [...array]
  .sort((x,y) => y -x).slice(0,number);

maxFromArray([2,1,4,3,5,6]); // [6]
maxFromArray([2,6,6],2); // [6,6]


3、計算階乘

const factorial = (number) =>
  number < 0
    ? (() => {
      throw new TypeError('型別錯誤');
    })()
    : number <= 1
    ? http://www.cppcns.com
1 : number * factorial(number - 1); factorial(4); // 24 factorial(10); // 3628800

4、判斷當前執行環境是否為瀏覽器

const isBrowser = () => ![typeof window,typeof document].includes('undefined');

isBrowser(); // false (Node)
isBrowser(); // true (browser)


5、判斷當前執行環境是否為Node.js

const isNode = () =>
  typeof process !== 'undefined' &&
  !!process.versions &&
  !!process.versions.node;

isNode(); // true (Node)
isNode(); // false (browser)


6、獲取url上的引數

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

getURLParams('qq.com'); // {}
getURLParams('https://xx.com?name=tntweb&age=20');
// {name: 'tntweb',age: '20'}


7、rgb(x,x)顏色表達方式格式轉換成物件格式

const toRGBObject = rgbStr => {
  const [red,green,blue] = rgbStr.match(/\d+/g).map(Number);
  return { red,blue };
};

toRGBObject('rgb(100,150,200)'); // {red: 100,green: 150,blue: 200}

8、轉義字串以在 HTML 中使用

const escapeHTML = str =>
  str.replace(
    /[&<>'"]/g,tag www.cppcns.com=>
      ({
        '&': '&amp;http://www.cppcns.com','<': '&lt;','>': '&gt;',"'": '&#39;','"': '&quot;'
      }[tag] || tag)
  );

escapeHTML('<a href="#" rel="external nofollow" >tntweb</a>'); 


9、Unescapes 轉義 HTML 字元

const unescapeHTML = str =>
  str.replace(
    /&amp;|&lt;|&gt;|&#39;|&quot;/g,tag =>
      ({
        '&amp;': '&','&lt;': '<','&gt;': '>','&#39;': "'",'&quot;': '"'
      }[tag] || tag)
  );

unescapeHTML('&lt;a href=&quot;#&quot;&gt;tntweb&lt;/a&gt;');


10、生成指定範圍內的隨機整數

const randomIntegerInRange = (min,max) =>
www.cppcns.com  Math.floor(Math.random() * (max - min + 1)) + min;

randomIntegerInRange(1,7); // 1 - 7


11、將波浪號路徑轉換為絕對路徑

const reversePath = str =>
  str.replace(/^~($|\/|\\)/,`${require('os').homedir()}$1`);

reversePath('~/web'); // '/Users/[userName]/web'


12、獲取不帶任何引數或片段識別符號的當前 URL

const getBaseURL = url => url.replace(/[?#].*$/,'');

getBaseURL('https://xx.com/index?name=tntweb&company=tencent');
// https://xx.com/index


13、以位元組為單位返回字串的長度

const byteSize = str => new Blob([str]).size;

byteSize('🚗'); // 4
byteSize('Hello World'); // 11


14、隨機獲取陣列中元素

const randomly = arr => arr[Math.floor(Math.random() * arr.length)];

randomly([1,7,9,11]);


15、檢查字串是否為有效的 JSON

const isValidJSON = str => {
  try {
    JSON.parse(str);
    return true;
  } catch (e) {
    return false;
  }
};

isValidJSON('{"name":"tntweb","age":20}'); // true
isValidJSON('{"name":"tntweb",age:"20"}'); // false
isValidJSON(null); // true

到此這篇關於15個值得收藏的函式的文章就介紹到這了,更多相關Script函式內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!