basicutils.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. function deepCopy(source) {
  2. if (!source) {
  3. return null
  4. }
  5. var result
  6. source instanceof Array ? (result = []) : (result = {})
  7. for (var key in source) {
  8. result[key] = typeof source[key] === 'object' ? deepCopy(source[key]) : source[key]
  9. }
  10. return result
  11. }
  12. export default {
  13. formatDateByPattern: function(date, pattern) {
  14. let fmt = pattern
  15. var o = {
  16. 'M+': date.getMonth() + 1, //月份
  17. 'd+': date.getDate(), //日
  18. 'H+': date.getHours(), //小时
  19. 'm+': date.getMinutes(), //分
  20. 's+': date.getSeconds(), //秒
  21. 'q+': Math.floor((date.getMonth() + 3) / 3), //季度
  22. S: date.getMilliseconds() //毫秒
  23. }
  24. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  25. for (var k in o)
  26. if (new RegExp('(' + k + ')').test(fmt))
  27. fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length))
  28. return fmt
  29. },
  30. deepCopy: deepCopy,
  31. /**
  32. * 找出数组arr中第一个属性key的值等于val的元素的下标
  33. * @param {*} arr 数组
  34. * @param {*} key 属性
  35. * @param {*} val 值
  36. */
  37. indexInArray: function(arr, key, val) {
  38. if (!arr || !arr.length || arr.length == 0) {
  39. return -1
  40. } else {
  41. for (let index = 0; index < arr.length; index++) {
  42. const element = arr[index]
  43. if (key in element && element[key] == val) {
  44. return index
  45. }
  46. }
  47. }
  48. return -1
  49. },
  50. /**
  51. * 找出数组arr中第一个属性key的值等于val的元素
  52. * @param {*} arr 数组
  53. * @param {*} key 属性名
  54. * @param {*} val 属性值
  55. */
  56. itemInArray: function(arr, key, val) {
  57. for (let index = 0; index < arr.length; index++) {
  58. const element = arr[index]
  59. if (key in element && element[key] == val) {
  60. return element
  61. }
  62. }
  63. return null
  64. },
  65. /**
  66. * 从数组中将属性key的值等于val的元素删除
  67. * @param {*} arr 数组
  68. * @param {*} key 属性名
  69. * @param {*} val 属性值
  70. */
  71. deleteInArray: function(arr, key, val) {
  72. if (!arr || !arr.length || arr.length == 0) {
  73. return
  74. } else {
  75. for (let index = arr.length - 1; index > -1; index--) {
  76. const element = arr[index]
  77. if (element[key] && element[key] == val) {
  78. arr.splice(index, 1)
  79. }
  80. }
  81. }
  82. }
  83. }