1、随机生成字符串
<template>
<div>
<p>随机字符串:</p>
<p>{{ randomString }}</p>
</div>
</template>
<script>
export default {
data() {
return {
randomString: '' // 初始化随机字符串为空
};
},
created() {
this.generateRandomString();
},
methods: {
randomStr() {
return Math.random().toString(20).slice(2);
},
generateRandomString() {
this.randomString = this.randomStr();
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了一个
randomStr
方法,用于生成随机字符串。 - 定义了
randomString
数据属性,用于存储生成的随机字符串。 - 在 Vue 实例的
created
生命周期钩子中调用generateRandomString
方法,以在组件创建时生成随机字符串。 generateRandomString
方法调用randomStr
方法生成随机字符串,并将结果赋给randomString
数据属性。- 在模板中使用插值语法
{{ randomString }}
来显示生成的随机字符串。
通过以上代码,您可以在 Vue 组件中生成并显示随机字符串。
2、实现字符串翻转
<template>
<div>
<p>反转字符串示例:</p>
<p>原始字符串:"{{ originalString }}"</p>
<p>反转后字符串:"{{ reversedString }}"</p>
</div>
</template>
<script>
export default {
data() {
return {
originalString: "vue 入门到精通", // 初始化原始字符串
reversedString: "" // 初始化反转后字符串为空
};
},
created() {
this.reverseOriginalString();
},
methods: {
reverseStr(str) {
return str.split("").reverse().join("");
},
reverseOriginalString() {
this.reversedString = this.reverseStr(this.originalString);
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了一个
reverseStr
方法,用于反转字符串。 - 定义了
originalString
数据属性,用于存储原始字符串。 - 定义了
reversedString
数据属性,用于存储反转后的字符串。 - 在 Vue 实例的
created
生命周期钩子中调用reverseOriginalString
方法,以在组件创建时反转原始字符串。 reverseOriginalString
方法调用reverseStr
方法将原始字符串反转,并将结果赋给reversedString
数据属性。- 在模板中使用插值语法
{{ originalString }}
和{{ reversedString }}
分别显示原始字符串和反转后的字符串。
通过以上代码,您可以在 Vue 组件中将指定的字符串进行反转,并显示反转后的结果。
3、删除数组中的重复元素
<template>
<div>
<p>Set 转换为数组示例:</p>
<ul>
<li v-for="item in setToArray" :key="item">{{ item }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
set: new Set([3, 4, 1, 2, 3, 1, 4, 1, 2, 5, 5, 6, 7, 8]), // 创建 Set 对象
setToArray: [] // 初始化数组为空
};
},
created() {
this.convertSetToArray();
},
methods: {
convertSetToArray() {
// 将 Set 转换为数组
this.setToArray = [...this.set];
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了一个
set
数据属性,用于存储 Set 对象。 - 定义了
setToArray
数据属性,用于存储将 Set 转换为数组后的结果。 - 在 Vue 实例的
created
生命周期钩子中调用convertSetToArray
方法,以在组件创建时将 Set 转换为数组。 convertSetToArray
方法使用扩展运算符...
将 Set 转换为数组,并将结果赋给setToArray
数据属性。- 在模板中使用
v-for
指令遍历setToArray
数组,并显示每个元素的值。
通过以上代码,您可以在 Vue 组件中将 Set 转换为数组,并显示数组中的元素。
4、RGB到十进制转换机制
<template>
<div>
<p>RGB 转换为 Hex 示例:</p>
<p>RGB(37, 37, 38) 转换为 Hex:{{ rgbToHex }}</p>
</div>
</template>
<script>
export default {
data() {
return {
rgbToHex: '' // 初始化转换后的 Hex 字符串为空
};
},
created() {
this.convertRgbToHex(37, 37, 38);
},
methods: {
convertRgbToHex(r, g, b) {
// RGB 转换为 Hex 的函数
this.rgbToHex = "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了一个
rgbToHex
数据属性,用于存储 RGB 转换为 Hex 后的结果。 - 在 Vue 实例的
created
生命周期钩子中调用convertRgbToHex
方法,并传入 RGB 值,以在组件创建时将 RGB 转换为 Hex。 convertRgbToHex
方法根据给定的 RGB 值计算出对应的 Hex 值,并将结果赋给rgbToHex
数据属性。- 在模板中使用插值语法
{{ rgbToHex }}
显示转换后的 Hex 值。
通过以上代码,您可以在 Vue 组件中将 RGB 颜色值转换为对应的 Hex 格式,并显示转换后的结果。
5、打乱一个数组,重新组合
<template>
<div>
<p>数组洗牌示例:</p>
<p>原始数组:[29, 3, 57, 2, 40]</p>
<p>洗牌后数组:{{ shuffledArray }}</p>
</div>
</template>
<script>
export default {
data() {
return {
originalArray: [29, 3, 57, 2, 40], // 原始数组
shuffledArray: [] // 初始化洗牌后的数组为空
};
},
created() {
this.shuffleArray();
},
methods: {
shuffleArray() {
// 使用 Fisher-Yates 洗牌算法洗牌
const array = this.originalArray.slice(); // 创建原始数组的副本,以免修改原始数组
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
this.shuffledArray = array;
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了一个
originalArray
数据属性,用于存储原始数组。 - 定义了
shuffledArray
数据属性,用于存储洗牌后的数组。 - 在 Vue 实例的
created
生命周期钩子中调用shuffleArray
方法,以在组件创建时将原始数组洗牌。 shuffleArray
方法使用 Fisher-Yates 洗牌算法洗牌原始数组,并将洗牌后的结果赋给shuffledArray
数据属性。- 在模板中使用插值语法
{{ shuffledArray }}
显示洗牌后的数组。
通过以上代码,您可以在 Vue 组件中对数组进行洗牌操作,并显示洗牌后的结果。
6、获取两个日期的时间间隔 (天数)
<template>
<div>
<p>计算日期差示例:</p>
<p>两个日期之间的天数差:</p>
<p>开始日期:{{ startDate }}</p>
<p>结束日期:{{ endDate }}</p>
<p>日期差:{{ dayDifference }}</p>
</div>
</template>
<script>
export default {
data() {
return {
startDate: new Date("2024-04-03"), // 开始日期
endDate: new Date("2025-04-03"), // 结束日期
dayDifference: 0 // 初始化日期差为0
};
},
created() {
this.calculateDayDifference();
},
methods: {
calculateDayDifference() {
const millisecondsPerDay = 1000 * 60 * 60 * 24;
const date1 = this.startDate.getTime();
const date2 = this.endDate.getTime();
const differenceInMillis = Math.abs(date1 - date2);
this.dayDifference = Math.ceil(differenceInMillis / millisecondsPerDay);
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了
startDate
和endDate
数据属性,分别表示开始日期和结束日期。 - 定义了
dayDifference
数据属性,用于存储计算出的日期差。 - 在 Vue 实例的
created
生命周期钩子中调用calculateDayDifference
方法,以在组件创建时计算日期差。 calculateDayDifference
方法根据开始日期和结束日期计算日期差,并将结果赋给dayDifference
数据属性。- 在模板中使用插值语法
{{ dayDifference }}
显示计算出的日期差。
通过以上代码,您可以在 Vue 组件中计算两个日期之间的天数差,并显示计算结果。
7、获取当天属于今年的第几天
<template>
<div>
<p>计算日期在当年中是第几天示例:</p>
<p>当前日期在当年中是第几天:</p>
<p>当前日期:{{ currentDate }}</p>
<p>在当年中的第几天:{{ dayOfYear }}</p>
</div>
</template>
<script>
export default {
data() {
return {
currentDate: new Date(), // 当前日期
dayOfYear: 0 // 初始化在当年中的第几天为0
};
},
created() {
this.calculateDayOfYear();
},
methods: {
calculateDayOfYear() {
const millisecondsPerDay = 1000 * 60 * 60 * 24;
const currentDate = this.currentDate;
const startOfYear = new Date(currentDate.getFullYear(), 0, 0);
const differenceInMillis = currentDate - startOfYear;
this.dayOfYear = Math.floor(differenceInMillis / millisecondsPerDay);
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了
currentDate
数据属性,表示当前日期。 - 定义了
dayOfYear
数据属性,用于存储计算出的当前日期在当年中的第几天。 - 在 Vue 实例的
created
生命周期钩子中调用calculateDayOfYear
方法,以在组件创建时计算当前日期在当年中的第几天。 calculateDayOfYear
方法根据当前日期计算在当年中的第几天,并将结果赋给dayOfYear
数据属性。- 在模板中使用插值语法
{{ dayOfYear }}
显示计算出的结果。
通过以上代码,您可以在 Vue 组件中计算当前日期在当年中的第几天,并显示计算结果。
8、截断字符串长度(截取字符串长度,超过部分显示为 ...)
<template>
<div>
<p>截取字符串示例:</p>
<p>字符串截取结果:</p>
<p>原始字符串:{{ originalString }}</p>
<p>截取长度为7:{{ splitString(7) }}</p>
<p>截取长度为10:{{ splitString(10) }}</p>
</div>
</template>
<script>
export default {
data() {
return {
originalString: "vue is good web frame" // 原始字符串
};
},
methods: {
splitString(length) {
const string = this.originalString;
return string.length < length ? string : `${string.slice(0, length - 3)}...`;
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了
originalString
数据属性,表示原始字符串。 - 定义了
splitString
方法,接收一个参数length
,用于截取字符串。 splitString
方法根据传入的length
参数,截取原始字符串并返回截取结果。- 在模板中使用
splitString
方法并传入不同的截取长度,来显示截取结果。
通过以上代码,您可以在 Vue 组件中截取字符串并显示截取结果。
9、判断数组是否为空
<template>
<div>
<p>检查数组是否非空示例:</p>
<p>数组非空检查结果:</p>
<p>数组 [6, 66, 666] 是否非空:{{ checkArrayNotEmpty([6, 66, 666]) }}</p>
<p>空数组 [] 是否非空:{{ checkArrayNotEmpty([]) }}</p>
</div>
</template>
<script>
export default {
methods: {
checkArrayNotEmpty(arr) {
return Array.isArray(arr) && arr.length > 0;
}
}
}
</script>
在这个示例中:
- 定义了
checkArrayNotEmpty
方法,接收一个参数arr
,用于检查数组是否非空。 checkArrayNotEmpty
方法使用Array.isArray
来确保传入的参数是一个数组,并且使用arr.length > 0
来检查数组是否非空。- 在模板中使用
checkArrayNotEmpty
方法来检查不同数组是否非空,并显示检查结果。
通过以上代码,您可以在 Vue 组件中检查数组是否非空,并显示检查结果。
10、合并两个数组为一个数组
<template>
<div>
<p>合并数组示例:</p>
<p>合并结果:</p>
<p>数组 a:{{ arrayA }}</p>
<p>数组 b:{{ arrayB }}</p>
<p>合并后的数组:{{ mergedArray }}</p>
</div>
</template>
<script>
export default {
data() {
return {
arrayA: [1, 2, 3], // 数组 a
arrayB: [4, 5, 6] // 数组 b
};
},
computed: {
mergedArray() {
return this.arrayA.concat(this.arrayB);
}
}
}
</script>
在这个示例中:
- 在 Vue 实例中定义了
arrayA
和arrayB
数据属性,分别表示数组 a 和数组 b。 - 使用计算属性
mergedArray
来合并数组 a 和数组 b,并返回合并后的结果。 - 在模板中使用插值语法
{{ mergedArray }}
来显示合并后的数组。
通过以上代码,您可以在 Vue 组件中合并两个数组,并显示合并结果。
11、英文句子首字母大写转换(实现英文句子中,每个单词首字母大写)
<template>
<div>
<p>将每个单词首字母大写示例:</p>
<p>处理结果:</p>
<p>"hello vue js" 处理结果:{{ capitalizeString("hello vue js") }}</p>
<p>"你好呀 js" 处理结果:{{ capitalizeString("你好呀 js") }}</p>
</div>
</template>
<script>
export default {
methods: {
capitalizeString(str) {
return str.replace(/\b[a-z]/g, (char) => char.toUpperCase());
}
}
}
</script>
在这个示例中:
- 定义了
capitalizeString
方法,接收一个参数str
,用于将每个单词的首字母大写。 capitalizeString
方法使用正则表达式\b[a-z]
来匹配每个单词的首字母,并通过回调函数char.toUpperCase()
来将其转换为大写字母。- 在模板中使用
capitalizeString
方法来处理不同的字符串,并显示处理结果。
通过以上代码,您可以在 Vue 组件中将每个单词的首字母大写,并显示处理结果。
12、数组删除元素(给定的数组从左边开始删除 n 个元素,默认n=1)
<template>
<div>
<p>移除数组的前 n 个元素示例:</p>
<p>处理结果:</p>
<p>移除前 1 个元素:{{ dropArray([10, 20, 30, 40]) }}</p>
<p>移除前 2 个元素:{{ dropArray([10, 20, 30, 40], 2) }}</p>
<p>移除前 42 个元素:{{ dropArray([10, 20, 30, 40], 42) }}</p>
</div>
</template>
<script>
export default {
methods: {
dropArray(arr, n = 1) {
return arr.slice(n);
}
}
}
</script>
在这个示例中:
- 定义了
dropArray
方法,接收两个参数arr
和n
,用于移除数组的前n
个元素,默认值为 1。 dropArray
方法使用slice
方法来移除数组的前n
个元素,并返回新的数组。- 在模板中使用
dropArray
方法来移除不同数组的前n
个元素,并显示处理结果。
通过以上代码,您可以在 Vue 组件中移除数组的前 n
个元素,并显示处理结果。
13、获取当前日期的时间部分
<template>
<div>
<p>从日期获取时间示例:</p>
<p>处理结果:</p>
<p>当前时间:{{ getTimeFromDate(new Date()) }}</p>
</div>
</template>
<script>
export default {
methods: {
getTimeFromDate(date) {
return date.toTimeString().slice(0, 8);
}
}
}
</script>
在这个示例中:
- 定义了
getTimeFromDate
方法,接收一个参数date
,用于从日期对象中获取时间部分。 getTimeFromDate
方法使用toTimeString
方法将日期对象转换为时间字符串,并使用slice
方法提取时间部分。- 在模板中使用
getTimeFromDate
方法来获取当前时间,并显示处理结果。
通过以上代码,您可以在 Vue 组件中从日期对象中获取时间部分,并显示处理结果。
14、判断是否是json字符串
<template>
<div>
<p>检查字符串是否为 JSON 示例:</p>
<p>处理结果:</p>
<p>检查 '{"name":"小明","address":"苏州"}' 是否为 JSON:{{ checkJSON('{"name":"小明","address":"苏州"}') }}</p>
<p>检查 '{"name":"小王",address:"南京"}' 是否为 JSON:{{ checkJSON('{"name":"小王",address:"南京"}') }}</p>
</div>
</template>
<script>
export default {
methods: {
checkJSON(str) {
try {
JSON.parse(str);
return true;
} catch (e) {
return false;
}
}
}
}
</script>
在这个示例中:
- 定义了
checkJSON
方法,接收一个参数str
,用于检查字符串是否为 JSON 格式。 checkJSON
方法使用JSON.parse
来尝试解析字符串,如果解析成功则返回true
,否则返回false
。- 在模板中使用
checkJSON
方法来检查不同字符串是否为 JSON 格式,并显示处理结果。
通过以上代码,您可以在 Vue 组件中检查字符串是否为 JSON 格式,并显示处理结果。
15、获取当前网址
<template>
<div>
<p>获取当前页面 URL 示例:</p>
<p>处理结果:</p>
<p>当前页面 URL:{{ getCurrentURL() }}</p>
</div>
</template>
<script>
export default {
methods: {
getCurrentURL() {
return window.location.href;
}
}
}
</script>
在这个示例中:
- 定义了
getCurrentURL
方法,用于获取当前页面的 URL。 getCurrentURL
方法直接访问window.location.href
属性获取当前页面的 URL。- 在模板中使用
getCurrentURL
方法来获取当前页面的 URL,并显示处理结果。
通过以上代码,您可以在 Vue 组件中获取当前页面的 URL,并显示处理结果。
16、数组排序(根据获取的数组内容不同,若明确其中的某个字符串是有规律的,我们可以通过截取其中的字符串进行处理排序问题)
<template>
<div>
<p>对数组中的数字和非数字元素进行排序示例:</p>
<p>处理结果:</p>
<ul>
<li v-for="item in sortedData" :key="item">{{ item }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
data: [
"图像001-00005-fr_清单人工通过",
"图像001-000b3-fr_清单人工通过",
"图像001-00003-fr_清单人工通过",
"图像001-00004-fr_清单人工通过",
"图像001-000a6-fr_自动通过",
"图像001-000b6-fr_自动通过",
"图像001-02c56-fr_通过",
]
};
},
computed: {
sortedData() {
const numbers = this.data.filter((str) => /^\d+$/.test(str));
const nonNumbers = this.data.filter((str) => !/^\d+$/.test(str));
numbers.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
nonNumbers.sort((a, b) => a.localeCompare(b));
return [...numbers, ...nonNumbers];
}
}
}
</script>
在这个示例中:
- 在
data
中定义了一个数组,包含了需要排序的数据。 - 使用
computed
属性定义了sortedData
计算属性,该属性返回一个对数字和非数字元素分别排序后的新数组。 - 在模板中使用
v-for
指令遍历sortedData
数组,并显示每个元素的内容。
通过以上代码,您可以在 Vue 组件中对数组中的数字和非数字元素进行排序,并显示处理结果。
17、常用正则(手机号、身份证、网址、邮箱、纳税号)
// 手机号
const phoneRegex = /^1[3-9]\d{9}$/;
//身份证
const idCard =
/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
//网址
const domain =
/(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
//邮箱
const email = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
//纳税号
const corporationTax = /^[0-9A-Z]{15,20}$/;
//调用正则
console.log(idCard.test('15236985214'))
18、手机号隐藏中间4位
function mobile(data) {
return data.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
}
console.log(mobile("15236985214"));
19、证件号脱敏,包括但不限于身份证(1)
function idCard(data) {
return data.replace(/(\d{4})\d*([0-9xX]{4})/, "$1******$2");
}
console.log(idCard('143666196316874569')); // 1436******4569
20、证件号脱敏,包括但不限于身份证(2)
function idCard(data) {
if (data.toString().length == 18) {
return data.slice(0, 2) + "****************" + data.slice(16, 18);
} else if (data.toString().length == 15) {
return data.slice(0, 2) + "***********" + data.slice(13, 15);
}
}
console.log(idCard('143666196316874569')); // 14****************69
21、证件号脱敏,包括但不限于身份证(3),data->数据,beforeLen->前置位数,afterLen->后置位数
function newIdCard(data, beforeLen, afterLen) {
let dataLenth = data.length - beforeLen - afterLen;
let middleStr = "";
for (let i = 0; i < dataLenth; i++) {
middleStr += "*";
}
return (
data.slice(0, beforeLen) +
middleStr +
data.substring(data.length - afterLen)
);
}
console.log(newIdCard("143666196316874569", 4, 7)); // 1436*******6874569
22、通过身份证获取生日
function idCardBirthday(data) {
//获取出生年月日
var year = data.substring(6, 10);
var month = data.substring(10, 12);
var day = data.substring(12, 14);
return `${year}-${month}-${day}`;
}
console.log(idCardBirthday("143666196306208069")); // 1963-06-20
23、通过身份证获取性别
function idCardGender(data) {
//1 男 2 女
let gender = parseInt(data.slice(-2, -1)) % 2 == 1 ? 1 : 2;
console.log(gender);
return gender == 1 ? "男" : "女";
}
console.log(idCardGender("143666196306208069"));
24、金额处理
function money(num) {
return num >= 10000 ? (parseFloat(num) * 10000) / 100000000 + "万" : num;
}
console.log(money(10000));// 1万