JS中处理数据

313 阅读1分钟

一,处理数组

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;
		}	
	}

关于手机号验证注意事项(可能出现1916开头)

一、中国电信号段:
133153173177180181189191199
二、中国联通号段:
130131132155156166175176185186
三、中国移动号段:
134(0-8)、135136137138139147150151152157158159178182183184187188198

所以验证的规则 不严格验证:/^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(',')