Vue3在script标签中引入
- const oDiv = document.createElement('div');
- const oScript = document.createElement('script');
- oDiv.setAttribute('id', 'app');
- oScript.type = 'text/javascript';
- oScript.src = "https://unpkg.com/vue@next";
- document.body.appendChild(oDiv);
- document.body.appendChild(oScript);
- window.onload = function () {
- const { createApp,ref } = Vue;
- const App = {
- template: `
- <div>{{msg}}</div>
- <p>{{count}}</p>
- `,
- data(){
- return {
- msg:'maomin'
- }
- },
- setup(){
- let count = ref(0);
- return {
- count
- }
- }
- }
- createApp(App).mount('#app');
- }
递归寻找操作(已删除指定项为例)
- // 递归寻找
- recursion(data, id) {
- let result;
- if (!data) {
- return;
- }
- for (let i = 0; i < data.length; i++) {
- let item = data[i];
- if (item.breakerId === id) {
- result = item;
- data.splice(i, 1);
- break;
- } else if (item.childrenBranch && item.childrenBranch.length > 0) {
- result = this.recursion(item.childrenBranch, id);
- if (result) {
- return result;
- }
- }
- }
- return result;
- },
递归数组,将数组为空设为undefined
- function useTree(data) {
- for (let index = 0; index < data.length; index++) {
- const element = data[index];
- if (element.childrenBranch.length < 1) {
- element.childrenBranch = undefined;
- } else {
- useTree(element.childrenBranch);
- }
- }
- return data;
- }
数组对象中相同属性值的个数
- group(arr) {
- var obj = {};
- if (Array.isArray(arr)) {
- for (var i = 0; i < arr.length; ++i) {
- var isNew = arr[i].isNew;
- if (isNew in obj) obj[isNew].push(arr[i]);
- else obj[isNew] = [arr[i]];
- }
- }
- return obj;
- },
- max(obj) {
- var ret = 0;
- if (obj && typeof obj === "object") {
- for (var key in obj) {
- var length = obj[key].length;
- if (length > ret) ret = length;
- }
- }
- return ret;
- },
- var data = [
- {
- addr: "1",
- isNew: false,
- },
- {
- addr: "2",
- isNew: false,
- }
- ]
- max(group(data) // 2
检测版本是vue3
- import { h } from 'vue';
- const isVue3 = typeof h === 'function';
- console.log(isVue3)
检测数据对象中是否有空对象
- let arr = [{},{name:'1'}]
- const arr = this.bannerList.filter(item =>
- item == null || item == '' || JSON.stringify(item) == '{}'
- );
- console.log(arr.length > 0 ? '不通过' : '通过')
深拷贝
- /* @param {*} obj
- * @param {Array<Object>} cache
- * @return {*}
- */
- function deepCopy (obj, cache = []) {
- // just return if obj is immutable value
- if (obj === null || typeof obj !== 'object') {
- return obj
- }
- // if obj is hit, it is in circular structure
- const hit = find(cache, c => c.original === obj)
- if (hit) {
- return hit.copy
- }
- const copy = Array.isArray(obj) ? [] : {}
- // put the copy into cache at first
- // because we want to refer it in recursive deepCopy
- cache.push({
- original: obj,
- copy
- })
- Object.keys(obj).forEach(key => {
- copy[key] = deepCopy(obj[key], cache)
- })
- return copy
- }
- const objs = {
- name:'maomin',
- age:'17'
- }
- console.log(deepCopy(objs));
h5文字转语音
- speech(txt){
- var synth = null;
- var msg = null;
- synth = window.speechSynthesis;
- msg = new SpeechSynthesisUtterance();
- msg.text = txt;
- msg.lang = "zh-CN";
- synth.speak(msg);
- if(window.speechSynthesis.speaking){
- console.log("音效有效");
- } else {
- console.log("音效失效");
- }
- }
模糊搜索
- recursion(data, name) {
- let result;
- if (!data) {
- return;
- }
- for (var i = 0; i < data.length; i++) {
- let item = data[i];
- if (item.name.toLowerCase().indexOf(name) > -1) {
- result = item;
- break;
- } else if (item.children && item.children.length > 0) {
- result = this.recursion(item.children, name);
- if (result) {
- return result;
- }
- }
- }
- return result;
- },
- onSearch(v) {
- if (v) {
- if (!this.recursion(this.subtable, v)) {
- this.$message({
- type: 'error',
- message: '搜索不到',
- });
- } else {
- this.tableData = [this.recursion(this.subtable, v)];
- }
- }
- },
input 数字类型
- <el-input
- v-model.number="form.redVal"
- type="number"
- @keydown.native="channelInputLimit"
- placeholder="请输入阈值设定"
- maxlength="8"
- ></el-input>
- channelInputLimit(e) {
- let key = e.key;
- // 不允许输入‘e‘和‘.‘
- if (key === 'e' || key === '.') {
- e.returnValue = false;
- return false;
- }
- return true;
- },
排序(交换位置)
- const list = [1,2,3,4,5,6];
- function useChangeSort (arr,oldIndex,newIndex){
- const targetRow = arr.splice(oldIndex, 1)[0];
- const targetRow1 = arr.splice(newIndex, 1)[0];
- arr.splice(newIndex, 0, targetRow);
- arr.splice(oldIndex, 0, targetRow1);
- return arr
- }
- console.log(useChangeSort(list,5,0)); // [6, 2, 3, 4, 5, 1]
格式化时间
- /**
- * Parse the time to string
- * @param {(Object|string|number)} time
- * @param {string} cFormat
- * @returns {string | null}
- */
- export function parseTime(time, cFormat) {
- if (arguments.length === 0 || !time) {
- return null;
- }
- const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}';
- let date;
- if (typeof time === 'object') {
- date = time;
- } else {
- if (typeof time === 'string') {
- if (/^[0-9]+$/.test(time)) {
- // support "1548221490638"
- time = parseInt(time);
- } else {
- // support safari
- // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
- time = time.replace(new RegExp(/-/gm), '/');
- }
- }
- if (typeof time === 'number' && time.toString().length === 10) {
- time = time * 1000;
- }
- date = new Date(time);
- }
- const formatObj = {
- y: date.getFullYear(),
- m: date.getMonth() + 1,
- d: date.getDate(),
- h: date.getHours(),
- i: date.getMinutes(),
- s: date.getSeconds(),
- a: date.getDay()
- };
- const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
- const value = formatObj[key];
- // Note: getDay() returns 0 on Sunday
- if (key === 'a') {
- return ['日', '一', '二', '三', '四', '五', '六'][value];
- }
- return value.toString().padStart(2, '0');
- });
- return time_str;
- }
本文转载自微信公众号「前端历劫之路」,可以通过以下二维码关注。转载本文请联系前端历劫之路公众号。