JS常用

排序

數組排序

//正序
Array.sort()

//範旭
Array.reverse()

數組對象排序

/*
 * 數組對象排序
 */
const compare = function(prop) {
  return function(obj1, obj2) {
    let val1 = obj1[prop];
    let val2 = obj2[prop];
    if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {
      val1 = Number(val1);
      val2 = Number(val2);
    }
    if (val1 < val2) {
      return -1;
    } else if (val1 > val2) {
      return 1
    } else {
      return 0
    }
  }
}

//調用   正序
ArrayObject.sort(compare('ObjectPropName'))

//反序
ArrayObject.sort(compare('ObjectPropName')).reverse()

三目運算符

// 傳統寫法
if (true) {
    // do true somethings
} else {
    // do fasle somethings
}

// 在三目運算符中只能有一句代碼,可以把代碼塊封裝成方法
true ? 'true things' : 'fasle things'

true ? function(parames) {}() : function(parames) {}()

true ? (function(parames) {})(parames) : (function(parames) {})(parames)

// 多重混用

var true1 = true, true2 = true

true1 ? true2 ? 'true2 true' : 'true2 fasle' : 'true1 fasle'

IF and FOR

IF
在if括號中的內容當值爲null, undefined, ‘’(空值)的時候均爲false

for循環多種寫法

var arr = [1, 3, 5, 6, 9]
for (var i = 0; i < arr.length; i++) {
    console.log(arr[i])
}

// for
for (var i = arr.length - 1; i >= 0; i--) {
    console.log(arr[i])
}

// for in
for(var i in arr) {
    console.log(arr[i])
}

// foreach
arr.forEach((key, value) => {
    console.log(key, value)
})

// map
arr.map(function(index, elem) {
    console.log(key, value)
})

// 也可以自定原型

Array.循環()

在 if 和 for 後面只有一句表達式的時候可以不用 { }

// IF示例
var a = 1
if (a) {
    a = 2
}
if (a) a = 2

// FOR示例
var b = [1, 4, 5]
for (var i in b) {
    console.log(b)
}
for (var i in b) console.log(b)

時間操作

時間格式化

/**
* 時間格式化
* time string 時間
* fmt string 輸出格式 默認年月日時分 例: yyyy-MM-dd hh:mm
* last string 上一年 'year' 上一月 'month'
*/
export function dateFormat (time, fmt, last) {
  let date
  if (time) {
    date = new Date(time)
  } else {
    date = new Date()
  }

  let o = {
    "M+" : date.getMonth()+1,                 // 月份
    "d+" : date.getDate(),                    // 日
    "h+" : date.getHours(),                   // 小時
    "m+" : date.getMinutes(),                 // 分
    "s+" : date.getSeconds(),                 // 秒
    "q+" : Math.floor((date.getMonth()+3)/3), // 季度
    "S"  : date.getMilliseconds()             // 毫秒
  }
  let year = date.getFullYear()
  if (last === 'year') {
    year--
  } else if (last === 'month') {
    if (o['M+'] === 1) {
      o['M+'] = 12
    } else {
      o['M+']--
    }
  }

  if (fmt) {
    if(/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (year + "").substr(4 - RegExp.$1.length))
    }
    for(let k in o)
      if(new RegExp("("+ k +")").test(fmt))
    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)))
    return fmt;
  } else {
    return year + "年" + o["M+"] + "月" + o["d+"] + "日 " + o["h+"] + "時" + o["m+"] + "分"
  }
}
發佈了62 篇原創文章 · 獲贊 24 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章