util.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. const formatTime = date => {
  2. const year = date.getFullYear()
  3. const month = date.getMonth() + 1
  4. const day = date.getDate()
  5. const hour = date.getHours()
  6. const minute = date.getMinutes()
  7. const second = date.getSeconds()
  8. return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
  9. }
  10. const formatNumber = n => {
  11. n = n.toString()
  12. return n[1] ? n : `0${n}`
  13. }
  14. const promisify = (api) => {
  15. return (options, ...params) => {
  16. return new Promise((resolve, reject) => {
  17. api(Object.assign({}, options, { success: resolve, fail: reject }), ...params);
  18. });
  19. }
  20. }
  21. const BeaconUtils = {
  22. // 计算距离
  23. calculateAccuracy:function(txPower, rssi, n) {
  24. // return (0.89976) * Math.pow(rssi / txPower, 7.7095) + 0.111
  25. return Math.pow(10, Math.abs(rssi - txPower) / (10 * n))
  26. },
  27. //求数组平均值
  28. arrayAverage:function (arr) {
  29. let tmp = arr.reduce((acc, val) => acc + val, 0) / arr.length
  30. return tmp
  31. },
  32. //数组分类
  33. classification:function (list,key) {
  34. let data = {}
  35. for(var i = 0; i < list.length; i++) {
  36. if(!data[list[i][key]]) {
  37. var arr = [];
  38. arr.push(list[i]);
  39. data[list[i][key]] = arr;
  40. }else {
  41. data[list[i][key]].push(list[i])
  42. }
  43. }
  44. return data
  45. },
  46. //求一维队列某点的高斯模糊权重 @param(队列长度,目标位置, 平均差)
  47. getOneGuassionArray: function(size, kerR, sigma) {
  48. if (size % 2 > 0) {
  49. size -= 1
  50. }
  51. if (!size) {
  52. return []
  53. }
  54. if (kerR > size-1){
  55. return []
  56. }
  57. let sum = 0;
  58. let arr = new Array(size);
  59. for (let i = 0; i < size; i++) {
  60. arr[i] = Math.exp(-((i - kerR) * (i - kerR)) / (2 * sigma * sigma));
  61. sum += arr[i];
  62. }
  63. return arr.map(e => e / sum);
  64. }
  65. }
  66. module.exports = {
  67. formatTime,
  68. promisify,
  69. BeaconUtils
  70. }