加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

开发中常用的 25 个JavaScript 单行代码

发布时间:2019-06-28 00:29:00 所属栏目:建站 来源:alentan
导读:副标题#e# 1.强制布尔值 要将变量强制转换为布尔值而不更改其值: constmyBoolean=!!myVariable; !!null//false !!undefined//false !!false//false !!ture//ture !!//false !!string//true !!0//false !!1//true !!{}//true !![]//true 2.基于某个条件为对

有时候我们会对url的查询参数即从问号 (?)后 开始的 URL(查询部分)进行转换

  1. const searchObj = search => JSON.parse(`{"${decodeURIComponent(search.substring(1)).replace(/"/g, '"').replace(/&/g, '","').replace(/=/g, '":"')}"}`); 
  2. // 假如请求url为 
  3. // 'https://www.baidu.com?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=js&rsv_pq=a86b5e5f0007bceb&rsv_t=1e1fAVan%2BVlnkhJHFB0BIGLdLM2slszYMJBTTfFkmyyBUzBpw0ggeuVDE50&rqlang=cn&rsv_enter=0&inputT=1287&rsv_sug3=5&rsv_sug1=3&rsv_sug7=101&rsv_sug2=0&rsv_sug4=1907' 
  4. // 那么 window.location.search 就为: 
  5. let search = '?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=js&rsv_pq=a86b5e5f0007bceb&rsv_t=1e1fAVan%2BVlnkhJHFB0BIGLdLM2slszYMJBTTfFkmyyBUzBpw0ggeuVDE50&rqlang=cn&rsv_enter=0&inputT=1287&rsv_sug3=5&rsv_sug1=3&rsv_sug7=101&rsv_sug2=0&rsv_sug4=1907' 
  6. searchObj(search) 

格式化查询字符串得到如下对象:

开发中常用的 25 个JavaScript 单行代码

12. JS 对象转 url 查询字符串

  1. const objectToQueryString = (obj) => Object.keys(obj).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`).join('&'); 
  2. objectToQueryString({name: 'Jhon', age: 18, address: 'beijing'}) 
  3. // name=Jhon&age=18&address=beijing 

13.获取数组交集

  1. const similarity = (arr, values) => arr.filter(v => values.includes(v)); 
  2. similarity([1, 2, 3], [1, 2, 4]); // [1,2] 

14.检测设备类型

使用正则表达式来检测 navigator.userAgent 属性判断设备是在移动设备还是在台式机/笔记本电脑打开。

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

15. 将数字转化为千分位格式

  1. const toDecimalMark = num => num.toLocaleString('en-US'); 
  2. toDecimalMark(12305030388.9087); // "12,305,030,388.909" 

16 多维数组转一维数组

  1. const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v))); 
  2. deepFlatten([1, [2], [[3], 4], 5]); // [1,2,3,4,5] 

17.过滤对象数组

  1. const reducedFilter = (data, keys, fn) =>data.filter(fn).map(el =>keys.reduce((acc, key) => {acc[key] =el[key];return acc;}, {})); 
  2. const data = [ 
  3.  { 
  4.  id: 1, 
  5.  name: 'john', 
  6.  age: 24 
  7.  }, 
  8.  { 
  9.  id: 2, 
  10.  name: 'mike', 
  11.  age: 50 
  12.  } 
  13. ]; 
  14. let a = reducedFilter(data, ['id', 'name'], item => item.age > 24); // [{ id: 2, name: 'mike'}] 

18.驼峰字字符串格式化

转换驼峰拼写的字符串为特定格式。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读