一些常用的工具函数

2020/01/13 功能实现

积累常用的工具函数

收集在项目中自己常用的工具函数,尝试自己动手实现,理清逻辑。不直接复用或者网上炒,慢慢积累,形成自己的工具库,可以不借助第三,自己手把手实现功能

  1. 实现千分位的分割
function format(num){
  let arr = []
  let str = String(num)
  for(let i=0,j=1;i<str.length;i++,j++){
    arr.push(str[i])
    if(j%3===0&&i!=str.length-1){
      arr.push(',')
    }
  }
  return arr.join('')
}

// 或者使用
let a = 8462948988.24;
a.toLocaleString();
  1. 二分法查找目标数据
function search(list, target) {
  let start = 0
  let end = list.length - 1
  if (end === 0) {
    return '数组长度是 0'
  }
  while (start <= end) {
    let mid = parseInt(start + (end - start) / 2)
    if (list[mid] > target) {
      console.log(mid, end, 2);
      end = mid - 1
    } else if (list[mid] < target) {
      console.log(mid, end, 3);
      start = mid + 1
    }
    if (list[mid] === target) {
      console.log(mid, end, 4);
      return mid
    }
    return -1
  }
}
  1. 平铺二维数组 ``` let arr = [[1,2,3],[4,5,6]] [].concat(…arr)

function flatten(arr){ return [].concat(arr.map(item=>{ return Array.isArray(item)?flatten(item):item })) } ```

//数组浅拷贝 var shallowCopy = function (obj) { //只能拷贝对象 if (typeof obj !== ‘object’) return var newObj = obj instanceof Array ? [] : {} for (var key in obj) { if (obj.hasOwnProperty(key)) { newObj[key] = obj[key] } } return newObj } //深拷贝,利用函数必包 var deepCopy = function (obj) { if (typeof obj !== ‘object’) return var newObj = obj instanceof Array ? [] : {} for (let key in obj) { if (obj.hasOwnProperty(key)) { newObj[key] = typeof obj[key] === ‘object’ ? deepCopy(obj[key]) : obj[key] } } return newObj }


有时候,虽然素未谋面。却已相识很久,很微妙也很知足。在逝去的岁月里,我们在某一刻,共同经历着一样的情愫。

如果喜欢我的话,我们可以互相关注,相互学习的哟!互相鼓励,你的关注是我最大的动力来源

sunseekers

Search

    Table of Contents