JS 数据统计常用函数

这篇博客主要介绍了JavaScript中关于时间的格式化、星期几的获取以及剩余时间的计算方法。同时,讲解了数值单位转换以及数组和字符串的操作,如连接、分割、截取等。此外,还展示了如何利用lodash库将行式数据转换为列式数据,方便数据处理。内容涵盖了基础的JavaScript编程技巧和实用的数据转换方法。
摘要由CSDN通过智能技术生成
1,时间转换
// 转换为几年几月几天几时几分几秒:函数处理
  // now: 时间戳
  formatDate (now) {
    var year = new Date(now).getFullYear();
    var month = new Date(now).getMonth() + 1;
    var date = new Date(now).getDate();
    var hour = new Date(now).getHours();
    var minute = new Date(now).getMinutes();
    var second = new Date(now).getSeconds();
    if (month < 10) {
      month = '0' + month;
    }
    if (date < 10) {
      date = "0" + date;
    }
    if (hour < 10) {
      hour = "0" + hour;
    }
    if (minute < 10) {
      minute = "0" + minute;
    }
    if (second < 10) {
      second = "0" + second;
    }
    return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
  },
  // 调用
  var aa = formatDate (1624265374 * 1000)
  // 输出格式 2021-06-21 16:49:34
// 获取星期几
  getWeek (dateString) {
    var dateArray = dateString.split("-");
    var date = new Date(dateArray[0], parseInt(dateArray[1] - 1), dateArray[2]);
    return "星期" + "日一二三四五六".charAt(date.getDay());
  },
  console.log(getWeek('2021-06-21')) // 星期一
// 处理剩余时间 剩余多少天
// time: 时间戳
function countDown (time) {
  var date1 = new Date().getTime();   //开始时间
  var date2 = time * 1000;     //结束时间
  var date3 = date2 - date1;   //时间差的毫秒数
  var days = Math.ceil(date3 / (24 * 3600 * 1000));
  return days;
} 
// 1624438173 ---》 2021-06-23 16:49:33的时间戳
console.log(countDown(1624438173)) // 2 剩余两天
2, 字符串和数值处理
// 转换单位
changeNumType (value) {
  if (value >= 10000 && value < 10000000) {
     value = (value / 10000).toFixed(2) + "万";
   } else if (value >= 10000000 && value < 100000000) {
     value = (value / 10000000).toFixed(2) + "千万";
   } else if (value >= 100000000) {
     value = (value / 100000000).toFixed(2) + "亿";
   } else if (value < 10000) {
     value = value;
   }
   return value;
 },
js常用内置对象有:Date,、Array、String、Math...
Array对象中常用方法: 
concat()     表示把几个数组合并成一个数组
join()      设置分隔符连接数组元素为一个字符串
pop()       移除数组最后一个元素
shift()     移除数组中第一个元素 
slice(start,end)  返回数组中的一段
splice()     可以用来删除,可以用来插入,也可以用来替换 
push()       往数组中新添加一个元素,返回最新长度
sort()        对数组进行排序
reverse()    反转数组的顺序 
toLocaleString()   把数组转换为本地字符串
array对象属性: 
length         表示取得当前数组长度 (常用)
constructor      引用数组对象的构造函数
prototype       通过增加属性和方法扩展数组定义
 
String对象 
charAt()          返回指定索引的位置的字符 
indexOf()          从前向后检索字符串,看是否含有指定字符串
lastIndexOf()       从后向前检索字符串,看是否含有指定字符串
concat()          连接两个或多个字符串
match()            使用正则表达式模式对字符串执行查找,并将包含查找结果最为结果返回
replace()         替换一个与正则表达式匹配的子串
search()          检索字符串中与正则表达式匹配的子串。如果没有找到匹配,则返回 -1slice(start,end)     根据下表截取子串 
substring(start,end)   根据下表截取子串 
split()          根据指定分隔符将字符串分割成多个子串,并返回素组
substr(start,length)   根据长度截取字符串 
toUpperCase()       返回一个字符串,该字符串中的所有字母都被转化为大写字母。 
toLowerCase()       返回一个字符串,该字符串中的所有字母都被转化为小写字母。
Math对象
ceil()向上取整。
floor()向下取整。
round()四舍五入。
random()取随机数。
3, 处理数组对象函数
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="lodash.js"></script>
</head>
<body>
  <div>测试数据转换</div>
  <script>
    // 数组对象 转换格式
    // 实现步骤:
    // 1,需要下载lodash.js 文件
    const empsRows = [
      { RowId: '001', EmpId: '10', Lastname: 'Smith', Firstname: 'Joe', Salary: 40000 },
      { RowId: '002', EmpId: '12', Lastname: 'Jones', Firstname: 'Mary', Salary: 50000 },
      { RowId: '003', EmpId: '11', Lastname: 'Johnson', Firstname: 'Cathy', Salary: 44000 },
      { RowId: '004', EmpId: '22', Lastname: 'Jones', Firstname: 'Bob', Salary: 55000 },
      { RowId: '005', EmpId: '24', Lastname: 'Steve', Firstname: 'Mike', Salary: 62000 }
    ]
    function applyColumn(colDataset, columnName) {
      if (!_.has(colDataset, columnName)) {
        colDataset[columnName] = []
      }
      return colDataset
    }
    function rowOriented2ColOriented(rowDataset) {
      let colDataset = {}

      rowDataset.forEach(function(row, i) {
        const columnNames = _.keys(row)

        columnNames.forEach(function(columnName) {
          colDataset = applyColumn(colDataset, columnName)
          colDataset[columnName][i] = row[columnName]
        })
      })

      return colDataset
    }

    const transformedDataset = rowOriented2ColOriented(empsRows)

    console.log(transformedDataset)
    /* 输出内容
    EmpId: (5) ["10", "12", "11", "22", "24"]
    Firstname: (5) ["Joe", "Mary", "Cathy", "Bob", "Mike"]
    Lastname: (5) ["Smith", "Jones", "Johnson", "Jones", "Steve"]
    RowId: (5) ["001", "002", "003", "004", "005"]
    Salary: (5) [40000, 50000, 44000, 55000, 62000]
     */
  </script>
</body>
</html>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值