[TOC]
### 1. 將時間戳轉換時間
~~~
/**
* @msg: 通過格林尼治時間戳格式化為標準日期
(時間為null的也會轉換)
* @param {Number} timestamp 時間戳
* @param {String} type 格式化類型 可選參數'YMD'和'YMDhms'
* @return: 標準格式日期
*/
export const formatDateByGreenwich = (timestamp, type) => {
let result = null
const date = new Date(timestamp)
const Y = `${date.getFullYear()}-`
const M = `${date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1}-`
const D = `${date.getDate() < 10 ? `0${date.getDate()}` : date.getDate()} `
const h = `${date.getHours() < 10 ? `0${date.getHours()}` : date.getHours()}:`
const m = `${date.getMinutes() < 10 ? `0${date.getMinutes()}` : date.getMinutes()}:`
const s = `${date.getSeconds() < 10 ? `0${date.getSeconds()}` : date.getSeconds()}`
if (type === 'YMD') {
result = Y + M + D
} else {
result = Y + M + D + h + m + s
}
return result
}
~~~
### 2. 將數組中的時間戳轉格式
~~~
/**
* @msg: 通過格林尼治時間戳將數組中指定字段格式化為標準日期(轉換數組中的時間,依賴formatDateByGreenwich 方法)
* @param {Array} arr 要修改的原數組
* @param {Array} nameArr 要修改的字段名稱 如:nameArr = ['createTime', 'lastTime']
* @param {String} type 格式化類型 可選參數'YMD'和'YMDhms'
* @return: 標準格式日期后的數組
*/
export const formatArrDateByGreenwich = (arr, nameArr, type) => {
arr.forEach(object => {
nameArr.forEach(ele => {
if (Object.prototype.hasOwnProperty.call(object, ele)) {
const create = formatDateByGreenwich(object[ele], type)
object[ele] = create
}
})
})
return arr
}
~~~
### 3.將字符串格式轉時間格式(# 時間轉化前臺將2020-07-17T03:07:02.000+0000轉化為2020-07-17 11:07:02傳參)
~~~
/**
* 時間格式化,將時間格式轉成字符串
*/
formateDate(datetime) {
// let = "2019-11-06T16:00:00.000Z"
function addDateZero(num) {
return (num < 10 ? "0" + num : num);
}
let d = new Date(datetime);
let formatdatetime = d.getFullYear() + '-' + addDateZero(d.getMonth() + 1) + '-' + addDateZero(d.getDate()) + ' ' + addDateZero(d.getHours()) + ':' + addDateZero(d.getMinutes()) + ':' + addDateZero(d.getSeconds());
return formatdatetime;
},
~~~
### 3. 過濾樹結構中是否包含某字段
~~~
/**
* 過濾目錄樹中是否包含指定名稱
* @param {arrTree} 被操作的樹
* @param {newName} 比較的字段
* @return:{Boole}
*/
export const filterTree = (arrTree, newName) => {
let flag = false
arrTree.children &&
arrTree.children.some(item => {
if (item.name === newName || newName === '全部') {
flag = true
}
filterTree(item, newName)
})
return flag
}
some() 方法用于檢測數組中的元素是否滿足指定條件(函數提供)。
some() 方法會依次執行數組的每個元素:
* 如果有一個元素滿足條件,則表達式返回*true*, 剩余的元素不會再執行檢測。
* 如果沒有滿足條件的元素,則返回false。
注意:some() 不會對空數組進行檢測。
注意:some() 不會改變原始數組。
~~~
### 4. 對象數組去重
~~~
/**
* 數組去重
* @param {Array} [需要排序的數組]
* @param {type} [對象數組的字段]
(傳入的為string型,就是通過什么判斷字段的唯一性)
* @returns Array
*/
export const arrUnique = (arr, type) => {
if (arr.length === 0) {
return arr;
} else {
if (type) {
const obj = {};
const newArr = arr.reduce((cur, next) => {
obj[next[type]] ? "" : (obj[next[type]] = true && cur.push(next));
return cur;
}, []);
return newArr;
} else {
return Array.from(new Set(arr));
}
}
};
~~~
### 5. 將一維數組轉換為多維數組(根據數據格式調整)
~~~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
</head>
<body>
<script>
function Ajax(collback){
$.ajax({
type:"get",
url:"./json.json",
dataType:"json",
success:function(res){
collback(res)
}
})
}
Ajax(res => {
let arr = res;
let ArrLength=[4,6,9,12]
// arr為要處理的數組 a為數組中code的長度 (code的長度必須有規律)
function aa(arr, a,pcode) {
let arrlist = []
if (a > 9) {
return arrlist
} else {
let filter = arr.filter(ele => {
if (ele.code.length == a && ele.code.startsWith(pcode)) {
// return ele
let item = {}
item.name = ele.name;
item.code = ele.code;
let readylist=aa(arr,a+3, item.code);
item.children=changechild(item.code,readylist)
arrlist.push(item)
}
});
return arrlist
}
}
//過濾子數組 e為上一級的code arr為要過濾的數組
function changechild(e,arr){
let news=[]
for (let i = 0; i < arr.length; i++)
if(arr[i].code.startsWith(e)){
news.push(arr[i])
}
return news
}
let a = aa(arr, 6, "4201")
console.log(a)
})
//遞歸:首先遞歸一定會有迭代條件,當不滿足情況直接return。滿足條件然后進行數據處理(在數據處理的時候調用自身),把最總的結果return出去
</script>
</body>
</html>
~~~
### 6. 數組或對象排序
~~~
/**
* 數組排序 不傳key -> 簡單值排序 傳key ->(根據數組里的對象里的某個字段)排序
* @param {Array} originArray
* @param {String} type (默認升序)
* @param {String} key
* @returns {Array} data
*/
export const sortArray = (originArray, type = 'up', key) => {
// 深拷貝一份數據
// 不改變原數據
if (!Array.isArray(originArray)) {
throw new Error('排序數據必須為數組類型!')
}
const array = JSON.parse(JSON.stringify(originArray))
const compare = n => (a, b) => {
if (a < b) {
return 1 * n
} else if (a > b) {
return -1 * n
}
return 0
}
const sort = n => k => (objN, objM) => {
const valN = objN[k]
const valM = objM[k]
return compare(n)(valN, valM)
}
// 不傳key,默認執行[1, 2, 3]這種排序
if (!key) {
if (type === 'down') {
array.sort(compare(1))
return array
}
array.sort(compare(-1))
return array
}
if (type === 'down') {
array.sort(sort(1)(key))
return array
}
array.sort(sort(-1)(key))
return array
}
~~~
### 7. 判斷對象類型
~~~
/**
* 判斷對象類型
* @param {Object} obj
* @returns {String} map[key]
*/
export const typeOf = obj => {
const { toString } = Object.prototype
const map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
'[object String]': 'string',
'[object Function]': 'function',
'[object Array]': 'array',
'[object Date]': 'date',
'[object RegExp]': 'regExp',
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object'
}
return map[toString.call(obj)]
}
~~~
### 8.表單是否通過非空校驗
~~~
// 表單數據是否通過非空校驗
isPassValidate(form) {
for (let key in this.rules) {
if (this.rules[key].some(x => x.required) && !this.isValidateValue(form[key])) {
return false;
}
}
return true;
},
~~~
### 9. 錢格式轉換
~~~
`$ ${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')
~~~
- vue簡介
- 基礎項目
- 點贊
- 綜合應用(從豆瓣上取數據,渲染到html中)
- 父組件向子組件傳參
- 零碎知識點
- vue渲染數據(for、url 、{{}})
- 跳轉頁面傳參
- 路由
- 更改端口
- 計算函數
- vue事件整理
- 整理1
- vue指令整理
- vue生命周期
- 格式
- 元素事件
- v-text和v-html
- vue 安裝及打包
- 前端ui組件、ui框架整合
- vue移動端ui之Vant
- 1. 環境配置
- 2.上拉刷新list
- 第一章 起步
- 第1節 開發環境配置
- 第2節 新建頁面
- 第3節 頁面跳轉
- 第4節 跳轉頁面傳參
- 第5節 使用組件
- 第6節 跨域取數據
- 第7節 不跨域使用原生axios
- 第二章 進階
- 第1節 封裝http
- 1. 封裝跨域的http
- 2. 不跨域的http
- 第2節 v-for,v-if,事件綁定
- 第3節 豆瓣綜合運用(組件傳參)
- 1. 子組件向父組件傳參
- 2.父組件向子組件傳參
- 3. 綜合運用
- 第三章 vue動畫
- 1. 鼠標滾動漸隱漸現、iconfont 在vue中的使用
- 2.鼠標 點擊 漸隱漸現實例
- 3. vue-TosoList
- 第四章 項目實踐
- 第1節 開發環境配置
- 1.vue-rem實現配置
- 使用vw配置
- 2. 樣式重置,fastclick,border.css的配置
- 3. 引入iconfont
- 4. 模板文件
- 第2節 輪播
- 1. 輪播實現
- 設置swiperList
- 第3節 exclude
- 第4節 使用插槽實現漸隱漸現
- 第5節 引用外部樣式scss
- 第6節 遞歸組件
- 第7節 解決進入頁面不是在頂部
- 第8節 異步組件
- 第9節 簡化路徑
- 第10節 better-scroll
- 第11節 兄弟組件之間聯動(傳參)
- 第12節 在vuex中設置緩存
- 第13節.頁面局部刷新
- 第五章 Vuex
- 第1節 介紹
- 第2節 組件之間傳參
- 2.1
- 第3節 封裝vuex
- 第六章 weex
- 第1節 weex開發環境配置
- 1.1JDK、SDK配置
- 第2節 使用
- 第七章 前端UI庫之
- 第1節 ant-design-vue 的安裝 創建
- 第二節 iview的使用
- 第八章 mpvue
- 第1節 安裝
- 第九章 Vue中使用餓了么UI
- 1. 踩坑1
- 2. 踩坑2
- 3.知識點整理
- 第十章 其他整理
- 1. this.$的使用
- 2. token配合js-coke插件使用
- 1. token介紹
- 2.使用
- 3. 使用自帶api
- 4. 全局引用組件
- 5. vue中的好東西
- 1. http請求
- 2. vuex
- 1. 項目中的使用1
- 2. 項目中使用(大型項目)
- 3. Object.freeze()
- 4. watch的使用
- 5. 全局通用參數配置appConfig
- 6. vue篇之事件總線(EventBus)
- 7. 分析路由配置項router
- 8. 路由權限配置
- 9. 全局配置信息,放置在store中進行使用
- 父子組件之間通信
- 使用Vue.observable()進行狀態管理
- 7. 項目工程化管理
- 1. 項目中的.env.development和.env.production文件是啥
- 2. 項目中的vuese.config.js是什么
- 3. commitlint控制規范信息
- 4. vue使用vue-awesome-swiper實現輪播
- 4. 項目代碼格式化校驗
- 8. vue中mixins的使用
- 知識點
- 1. 重置data中的數據
- 2.解構賦值
- 3.小數相加
- 4. 數字三位加點
- 表格邊框
- keep-alive
- fancyBox3圖片預覽
- 還原data數據
- slot嵌套使用
- vue父子組件的什么周期
- 滾動條樣式調整
- 開發問題
- 第十一 通用公共模塊
- 通用方法整理
- 遞歸
- forEach跳出循環
- 通用組件整理
- 模態框
- 知識整理
- 組件
- 豎直導航欄
- 導航知識整理
- 導航欄組件
- index.js
- render.js
- ErsMenu.vue
- 按鈕
- 按鈕
- icon組件
- icon知識整理
- 組件內容
- 第十二章 插件整理
- 1. perfect-scrollbar滾動條
- 1.1 項目中使用
- 2. jszip文件夾打包上傳
- 3. jsPlumb實現流程圖
- 4. ztree實現樹結構
- 5. better-scroll 手機上滑下滑
- 6. vue-awesome-swiper 輪播
- 7. js-cookie
- 8. v-viewer圖片查看器
- 9. Photoswipe 圖片查看插件
- 開發流程整理
- vue源碼學習篇
- vue2.x
- 源碼debugger調試
- 響應式原理
- vue3.x
- 源碼調試
- 新響應式原理
- vue3.0新特性