呢呢 Blog 呢呢 Blog
首页
  • 前端

    • web Worker使用笔记
  • 博客搭建

    • 快速上手
文集
  • 前端公用方法
关于
  • 网站
  • 资源
  • Vue资源
  • 友情链接
GitHub
首页
  • 前端

    • web Worker使用笔记
  • 博客搭建

    • 快速上手
文集
  • 前端公用方法
关于
  • 网站
  • 资源
  • Vue资源
  • 友情链接
GitHub
  • 传感器相关

  • 公共组件

    • 前端公用方法
      • 获取url中的参数
      • 数组去重
      • 根据特定的字符排序
      • 日期格式化
      • 打开浏览器浮动窗口
      • 下载文件
      • 一维数组拆分成多维数组(按subGroupLeng拆分)
      • 多维数组解构成一纬数组
      • 获取两个经纬度高度的距离
    • 主系统传递的公用方法
    • 判断点线面是否交叠包含
  • 信息系统项目管理师

  • 大屏可视化编辑器

  • 文档
  • 公共组件
Ni Ni
2020-03-05

前端公用方法

# 获取url中的参数

/**
 * 获取url里的参数 
 * @param linkUrl
 * return {key:value}
 */
export function getParams(linkUrl) {
  let url = decodeURI(linkUrl||window.location.href)
  let params = url.split("?")
  if(params.length > 1){
    let arr = params[1].split("&")
    let config = {}
    for(let i = 0;i<arr.length;i++){
      let keyval = arr[i].split('=')
      if(keyval.length > 1){
        config[keyval[0]] = keyval[1]
      }
    }
    return config
  }else{
    return false
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 数组去重

/**
 * 数组去重
 * @param arr 参数['2018-10-11 10-12-11','2018-10-11 10-12-11']
 * @returns ['2018-10-11 10-12-11']
 */
export function unique(arr) {
   return [...new Set(arr)]
}

1
2
3
4
5
6
7
8
9

# 根据特定的字符排序

  /**
   * 根据特定的字符排序
   * @params sortArr ['a','b','c','d']
   * @params itemList [{name:'b'},{name:'a'},{name:'d'},{name:'c'}]
   * return [{name:'a'},{name:'b'},{name:'c'},{name:'d'}]
   */
  export function sortByArr(sortArr,itemList){
    return itemList.sort((i,j)=>sortArr.indexOf(i.name)-sortArr.indexOf(j.name))
  }
1
2
3
4
5
6
7
8
9

# 日期格式化

/** 
 * 日期格式化
 * params: format:格式
 * date:  日期值
 * 功能:将日期以指定格式输出
 * 返回:指定形式的日期字符串
 */
export function dateFormat(format, date = new Date()) {
  // const realDate = date || new Date()
  if(!date){return}
  const realDate = new Date(date)
  let milliseconds = realDate.getMilliseconds() +''
  while(milliseconds.length < 3){
    milliseconds = '0'+milliseconds
  }
  const obj = {
    'M+': realDate.getMonth() + 1,
    'd+': realDate.getDate(),
    'h+': realDate.getHours(),
    'm+': realDate.getMinutes(),
    's+': realDate.getSeconds(),
    'q+': Math.floor((realDate.getMonth() + 3) / 3), // 季度
    'S': milliseconds // 毫秒
  }
  if (/(y+)/.test(format)) {
    format = format.replace(RegExp.$1, (realDate.getFullYear() + '').substr(4 - RegExp.$1.length))
    for (var k in obj) {
      if (new RegExp('(' + k + ')').test(format)) {
        format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (obj[k]) : (('00' + obj[k]).substr(('' + obj[k]).length)))
      }
    }
  }
  return format
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 打开浏览器浮动窗口

/**
  * 打开浮出窗口(浏览器新窗口)
  * @param url 窗口链接	
  * @param config 参数
  * @param width 宽
  * @param height 高
	*/
	export function openOverflowWindow(url,config,width,height){
	  let domain = window.location.href.split('#')[0]
	  let finalurl = domain + '#' +url
	  let arr = []
	  for(let keys in config){
	    console.log(keys,config[keys])
	    arr.push(keys+'='+config[keys])
	  }
	  let params = arr.join("&")
	  if(arr.length > 0) {
	    finalurl += "?" + params
	  }
	  let finalHeight = height || 500
	  let finalWidth = width || 600
	  let finalfeatures = "height="+finalHeight+", width="+finalWidth+", location=no,menubar=no,status=no,toolbar=no"
	  window.open(finalurl,new Date().getTime(),finalfeatures)
	}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 下载文件

/**
 * 下载文件
 * @param url 下载地址
 */
export function  downFile(url) {
	try {
	  var downLoadElement = document.createElement("a");
	  downLoadElement.href = url;
	  downLoadElement.style.display = "none";
	  document.body.appendChild(downLoadElement);
	  downLoadElement.click()
	  document.body.removeChild(downLoadElement);
	} catch (e) {
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 一维数组拆分成多维数组(按subGroupLeng拆分)

/**
 * 数组拆分 
 * @param array [1,2,3,4,5]
 * @param count 个数
 * return [[1,2],[3,4],[5]]
 */
export function  groupArr(array, count) {
    let index = 0;
    let newArr = [];
    while(index < array.length) {
        newArr.push(array.slice(index, index += count));
    }
    return newArr;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 多维数组解构成一纬数组

/**
 * 多维数组解构成一纬数组 
 * @param array [[1,2,3],[3,4],[5]]
 * return [1,2,3,4,5]
 */
export function  resetMuliArr(array) {
    let index = 0;
    let newArr = [].concat.apply([], array)
    return newArr;
}
1
2
3
4
5
6
7
8
9
10

# 获取两个经纬度高度的距离

   /**
    * 说明 : 假设XY平面是赤道平面,X轴经过0度,则任意一点可以投影出三维空间中的坐标
    * x = h * cos(la) * cos(lo)
    *  y = h * cos(la) * sin(lo)
    *  z = h * sin(la)
    *  h = 海拔高度 + 地球半径
    *  la = 纬度 (弧度)
    *  lo = 经度 (弧度)
    *  L = Math.sqrt( Math.pow(x1-x2,2) +Maht.pow(y1-y2)+Math.pow(z1-z2))
    */
    function getXYZ(params){
      let {lon ,lat, alt} = params;
      lon =   Math.PI / 180 * lon ; //转成弧度
      lat =   Math.PI / 180 * lat ; //转成弧度

      let h = alt+ 6371.393*1000
      return {
        x : h *Math.cos(lat)*Math.cos(lon),
        y : h* Math.cos(lat) * Math.sin(lon),
        z : h * Math.sin(lat)
      }
    }
    export function getDisance(){
      let {x:x1,y:y1,z:z1} = this.getXYZ(baseStationInfo) //基站
      let {x:x2,y:y2,z:z2} = this.getXYZ(this.saveData.bdParam) 
      l = Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2)+Math.pow(z1-z2,2))||0 
      return l.toFixed(2)
    }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

具体查看 主应用中的common.js

编辑
上次更新: 2021/09/17, 17:51:47
dtu模块离线原因
主系统传递的公用方法

← dtu模块离线原因 主系统传递的公用方法→

最近更新
01
react全家桶搭建全家桶模板
10-19
02
react学习到搭建一个全家桶的基础模板
10-09
03
202108自修图
09-24
更多文章>
Theme by Vdoing | Copyright © 2020-2021 Ni Ni | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×