<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
第一個引數是匹配路徑,第二個是深度匹配,第三個是匹配規則
const requireComponent = require.context('./libary', true, /.vue$/) export default { install (Vue) { requireComponent.keys().forEach((item) => { **根據元件的name註冊全域性元件** Vue.component( requireComponent(item).default.name, requireComponent(item).default ) }) } }
匯入預設圖片
import defaultImg from '@/assets/images/200.png' export default { install (Vue) { // // 註冊自定義指令 v2方法 Vue.directive('lazy', { // inserted () { // console.log(11111) // } //註冊自定義指令 v3方法 mounted (el, binding) { // 瀏覽器提供 IntersectionObserver const observer = new IntersectionObserver( ([{ isIntersecting }]) => { // console.log(isIntersecting, '====IntersectionObserver') if (isIntersecting) { console.log(el, binding, 11111) // 圖片載入失敗就顯示預設圖片 el.onerror = function () { el.src = defaultImg } el.src = binding.value // 不在監聽dom observer.unobserve(el) } }, { threshold: 0.01 } ) // 監聽dom observer.observe(el) } }) } }
基於 FileReader 把檔案讀取為 base64 的字串:
fileChange (e) { // console.log(e.target.files) if (e.target.files.length === 0) { // 沒有選擇圖片 this.avatar = '' } else { // 建立 fr 物件---FileReader建構函式 const fr = new FileReader() // 讀取檔案 fr.readAsDataURL(e.target.files[0]) // 監聽載入事件,讀取成功後執行裡面的回撥 fr.onload = () => { // 將結果賦給xxx this.avatar = fr.result } } },
給input設定change改變事件
當後端傳來的資料是扁平化的時候,前端可用程式碼處理資料得到樹形結構
列表型資料的關鍵屬性: id 和 pid, id指的是自己的部門id, pid指的是父級部門的id (空則沒有父級部門) 孩子的pid與父親的id一致
// 注 : list 傳來的陣列 , value 篩選的條件 function arrToTree(list, value) { // 1.定義一個空陣列,後續往裡面新增樹形結構 const arr = [] list.forEach(item => { // 2. 篩選滿足要求的item if (item.pid === value) { // 3.篩選所有孩子,即pid與父級id一致的(外迴圈走一次,裡面走完所有) const children = arrToTree(list, item.id) // 4.父級中有孩子,才能加上children屬性 if (children.length > 0) { // 5. 因為需要的樹形結構中孩子屬性名為children,手動給父級新增一個children屬性,並賦值 item.children = children } // 6. 把滿足要求的一組資料push進去 arr.push(item) } }) // 返回樹形結構 return arr }
// 第一次呼叫函數,找出pid為''的每一項(即父級),後面呼叫,找孩子
呼叫: arrToTree(list, '')
let obj = { name:'張三', age:20, hobby:['學習','上課','乾飯'], student:{ name:'尼古拉斯趙四', age:38 } } //深拷貝函數 function copy(obj,newObj){ for(let key in obj ){ if( obj[key] instanceof Array ){ newObj[key] = [] //遞迴呼叫 繼續深拷貝陣列 copy(obj[key],newObj[key]) }else if( obj[key] instanceof Object ){ newObj[key] = {} //遞迴呼叫 繼續深拷貝物件 copy(obj[key],newObj[key]) }else{ newObj[key] = obj[key] } } } //開始拷貝 let newObj = {} copy(obj,newObj)
我們拿到的資料:arr=[{入職日期:43535,姓名:'jack',手機號:111111....},{}]
需要的上傳格式: [{timeOfEntry:43535,username:'jack',mobile:111111....},{}]
//手動寫一個具有對應關係的物件 const userRelations = { '入職日期': 'timeOfEntry', '手機號': 'mobile', '姓名': 'username', '轉正日期': 'correctionTime', '工號': 'workNumber' } //第一個引數是自己寫的對應關係物件,第二個引數是原陣列 function demandArr(userRelations,arr){ //建立一個空陣列 const newArr = [] arr.forEach(item => { //建立一個空物件 const obj = {} //迴圈陣列裡的每一個物件 for (const k in item) { const englishKey = userRelations[k] obj[englishKey] = item[k] } newArr.push(obj) }) } // console.log(newArr)
以上就是JavaScript前端實用的工具函數封裝的詳細內容,更多關於JavaScript工具函數封裝的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45