一,处理数组
1.JavaScript根据对象某属性获得其在数组中的index
let arr=new Array({"name":"wxx","age":2},{"name":"yier","age":6});
let index=arr.findIndex(function(item){
return item.name===='yier'
})
console.log(index)
二,处理字符串
1.截取字符串中逗号后面的字符
function getCaption(obj){ var index=obj.lastIndexOf("\,"); obj = obj.substring(index+1,obj.length); return obj;}
var str="dsafas,风格非djsld13";getCaption(str);console.log(getCaption(str)); //风格非djsld13
2.处理链接
function GetRequestParams(hrefUrl){
let href=hrefUrl;
let localhref=href;
//如果有#/的时候要做的处理
if(href.indexOf('#/')!==-1){
let reg=new RegExp('#/')
localhosthref=href.replace(reg,'');
}
let localarr;
if(localhref.split('?')[1]){
localarr=localhref.split('?')[1].split('&')
}
if(!localarr){
return null;
}
var tempObj={};
for(let i=0;i<localarr.length;i++){
tempObj[localarr[i].split('=')[0]]=localarr[i].split('=')[1]
}
return tempObj;
}
3.身份证验证是否合法
/**
* 身份证输入验证合不合法
* obj是输入的值---判断用的
* */
function chaxun(obj) {
let isflag=false;
var sfzh = obj;
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (reg.test(sfzh) === false) {
return true;
}
}
4.处理对象中返回来的值为null,undefind时置为""
/**
* 请求参数验证
* params 的所有属性值为null值或者为undefined值时置为空字符串
* 参数验证
* if(!this.paramsValidate(params)) return;
*/
function paramsValidate(params) {
for (var key in params) {
if (params[key] === 'null' || !params[key] || params[key] == 'undefined' || params[key] == null) {
params[key] = ""
}
}
}
5.去掉数组中前缀http://hddhfhdh:8080
// 找到字符串中的值然后去掉
function delSomething(arr,httpurl){
var reg = new RegExp(httpurl,"g");
arr.forEach((val,index)=>{
// 找到前缀的值
if(val.indexOf(httpurl)>-1){
arr[index]=val.replace(reg,'')
}
})
}
let httpUrl="http://172.16.230.32:8080"
let arr1=["http://172.16.230.32:8080/resource/ssmz/cs/2021/1634003307103.jpg","http://172.16.230.32:8080/resource/ssmz/cs/2021/88888888.jpg"]
delSomething(arr1,httpUrl)
console.log(arr1)
6.去掉字符串中不想要的东西(包括处理字符串和数组的)
// 找到字符串中的值然后去掉
function delSomething(arr, httpurl) {
var reg = new RegExp(httpurl, "g");
if(typeof arr=='string'){
if(arr.indexOf(httpurl)>-1){
arr=arr.replace(reg,'')
} }else{
arr.forEach((val, index) => {
// 找到前缀的值
if (val.indexOf(httpurl) > -1) {
arr[index] = val.replace(reg, '')
} }) }
console.log(arr)
return arr;
}
7.处理返回来的数据空格、换行
function transformStringLineBreak (str) {
if (!str) {
return []
}
let arr = str.split(/\n/g)
console.log(arr)
if (!arr[arr.length - 1]) {
// 如果以换行符结尾,arr的最后一项为'',此时需删除数组最后一项空字符串
arr.pop()
}
return arr
}
然后用数组接收,然后再遍历出来。
8、查找指定元素在数组中的索引值
function findIndex(l, o) {
var objStr = JSON.stringify(o)
return l.reduce((index, ele, i) => {
if (JSON.stringify(ele) === objStr) {
return i
} else {
return index
}
}, -1)
}
/**
*arr是所传入的数组,el是传入需要对比的值
*/
findIndex(arr, el)
***************************************************************************
三、js快速将对象中所有健赋值为空
let obj={
a:'1',
b:'2',
}
Object.keys(obj).forEach(key=>{obj[key]=''}
console.log(obj)
四、去掉字符串和数组中的前缀
// 找到字符串中的值然后去掉
function delSomething(arr, httpurl) {
var reg = new RegExp(httpurl, "g");
if(typeof arr=='string'){
if(arr.indexOf(httpurl)>-1){
arr=arr.replace(reg,'')
}}else{
arr.forEach((val, index) => {
// 找到前缀的值
if (val.indexOf(httpurl) > -1) {
arr[index] = val.replace(reg, '')
} }) }
console.log(arr)
return arr;
}
五、循环遍历对象中的value值是否为空
function judgeObj(object) {
// 判断对象内容是否为空
let isEmpty = false
Object.keys(object).forEach((x) => {
console.log(object[x])
if (object[x] == null || object[x] == '') {
isEmpty = true }
})
if (isEmpty) {
return true
} else {
return false
}}
六、以换行符结尾,然后处理成数组渲染在页面上
function transformStringLineBreak (str) {
if (!str) {
return []
}
let arr = str.split(/\n/g)
console.log(arr)
if (!arr[arr.length - 1]) {
// 如果以换行符结尾,arr的最后一项为'',此时需删除数组最后一项空字符串
arr.pop()
}
return arr
}
七、身份证输入合不合法
/**
* 身份证输入验证合不合法
* obj是输入的值---判断用的
* */
function chaxun(obj) {
// let isflag=false;
var sfzh = obj;
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (reg.test(sfzh) === false) {
return true;
}
}
关于手机号验证注意事项(可能出现19,16开头)
一、中国电信号段:
133、153、173、177、180、181、189、191、199
二、中国联通号段:
130、131、132、155、156、166、175、176、185、186
三、中国移动号段:
134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198
所以验证的规则 不严格验证:/^1[3456789]\d{9}$/严格验证就要根据第二位数去判断第三位数应该是啥,不过尽量不做严格验证,
用户输不了,就可能不用了,或者说出了一个新的号段,就不符合规则了。
// 判断是否为手机号
isPoneAvailable: function (pone) {
var myreg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
if (!myreg.test(pone)) {
return false;
} else {
return true;
}
},
// 判断是否为电话号码
isTelAvailable: function (tel) {
var myreg = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
if (!myreg.test(tel)) {
return false;
} else {
return true;
}
},
七、数组和字符串之间互相转换
(1)数组转换为字符串
Array 对象的数组与字符串相互转换方法
数组方法
说明
toString()
将数组转换成一个字符串
toLocalString()
把数组转换成本地约定的字符串
join()
将数组元素连接起来以构建一个字符串
**********toString()*******************
var a=[1,2,3,4];//定义数组
var s=a.toString();//把数组转换为字符串
console.log(s);//返回字符串"1,2,3,4"
console.log(typeof s);//返回字符串string,说明是字符串类型
==当数组用于字符串环境时,JavaScript会自动调用toString()方法将数组转换成字符串。
在某些情况下,需要明确调用这个方法
var a=[1,2,3,4,5,0];//定义数组
var b=[1,2,3,4,5,6];//定义数组
var s=a+b;//数组连接操作
console.log(s);//返回"1,2,3,4,5,01,2,3,4,5,6"
console.log(typeof s); //返回字符串string,说明是字符串类型
==toString() 在把数组转换成字符串时,首先要将数组的每个元素都转换为字符串。
当每个元素都被转换为字符串时,才使用逗号进行分隔,以列表的形式输出这些字符串。
var a = [1,[2,3],[4,5]],[6,[7,[8,9],0]]]; //定义多维数组
var s = a.toString(); //把数组转换为字符串
console.log(S); //返回字符串“1,2,3,4,5,6,7,8,9,0”
********join***************
var a=[1,2,3,4,5];//定义数组
var s=a.join("==");//指定分隔符
console.log(s);//返回字符串"1==2==3==4==5"
把字符串转换成数组
split()方法把字符串转换成数组
var s='1==2==3==4==5'
vvar a=s.split('==')
八、setTimeout和setInterval的区别
区别:setTimeout只运行一次,也就是说设定的时间到后就触发运行指定代码,运行完即结束。而setInterval是一直循环运行下去,即每到设定时间间隔就触发指定diamagnetic,要想停止,需要使用clearInterval()函数
<template>
<view class="container">
<view class="" @click="sendCode">
{{sendText}}
</view>
</view>
</template>
<script>
export default {
data() {
return {
sendDisabled:false,
sendText:'获取验证码'
};
},
onShow() {
},
onLoad(options) {
},
methods: {
sendCode(){
let that=this;
that.sendDisabled = true
let sec = 60
let interval = setInterval(() => {
sec--;
that.sendText = sec + 's后重发'
if (sec <= 0) {
that.sendDisabled = false
that.sendText = "获取验证码"
clearInterval(interval)
}
}, 1000)
}
},
}
</script>
<style lang="scss">
</style>
九、生成1-10的随机数
var num = Math.ceil(Math.random()*10); //生成1-10的随机数
十、根据数组对象中的id作比较,id相同的去掉。这种方法只会保留 id 第一个出现的数组
var arr = [
{id: 1, name: 'sli', year: 2012},
{id: 2, name: 'ap', year: 2015},
{id: 1, name: 'alslion', year: 2012},
{id: 3, name: 'pose', year: 2012},
]
//删除arr中的重复对象
var newArr= [];
var arrId = [];
for(var item of arr){
if(arrId.indexOf(item['id']) == -1){
arrId.push(item['id']);
newArr.push(item);
}
}
console.log(arrId,newArr);
第二种:
let arr = [
{name:'黎明',id:21111},
{name:'王小二',id:1111},
{name:'大小二',id:3222}
]
arr.splice(arr.findIndex(item => item.id === 3222), 1);
十一、找到两个数组对比后的所在原数组的索引值
findSaneElements(arr1,arr2){
let sameElements=[]
for(let i=0;i<arr1.length;i++){
for(j=0;j<arr2.length;j++){
if(arr1[i].id===arr2[j].id){
sameElements.push(i+1)
}
}
}
return sameElments;
}
let findIndexArr=findSaneElements(arr1,arr2)
把数组用逗号分隔
let newArr=findIndexArr.join(',')