⼩程序笔记(⼆)(常⽤的js代码)1. 设置按钮不能重复点击
<button class='btnlogin'bindtap="{{!canSubmit?'submit':''}}">提交</button>
canSubmit默认false
submit:function(){
this.setData({
canSubmit:true
})
//执⾏操作,操作结束后
this.setData({
canSubmit:false
})
}
2. 三元运算符替换if-else
3.改变对象中某⼀属性值
var user = wx.getStorageSync('user');
user['teamType']= amType;
wx.setStorageSync('user', user);
this.setData({
info: data,
['amProfile']: amProfile,
})
4.数组相关
1. 字符串分割成数组
var arr = data.split("、");
this.setData({
list: arr
})
2. 合并数组
//使⽤扩展运算符(...)
var arr1 =[1,2,3,4];
var arr2 =[...arr1,5,6,7,8];
console.log(arr2);
结果:
[1,2,3,4,5,6,7,8]
3. 去除重复元素
//使⽤扩展运算符
var arr1 =[1,1,2,2,3,3,3];
var arr2 =[...new Set(arr1)];
console.log(arr2);
结果:
[1,2,3]
//使⽤filter
var arr =[1,1,2,2,3,3,3];
var arrNew = arr.filter(function(element, index, self){
return self.indexOf(element)=== index;
});
console.log(arrNew);
结果:
[1,2,3]
//通过Set对象,对数组去重,结果⼜返回⼀个Set对象
//通过from⽅法,将Set对象转为数组
Array.from(new Set(arr))
4. 扩展运算符将字符串转为数组
var str ="hello";
var strArr =[...'hello']
console.log(strArr)
结果:
["h","e","l","l","o"]
5. 判断对象中是否存在某个属性时,hasOwnProperty 是唯⼀可⽤的⽅法
for(var i in obj){
if(obj.hasOwnProperty(i)){
console.log(i,':'+ obj[i]);
}
}
5.异步执⾏Promise的使⽤
获取审核状态根据状态判断是否跳转完善信息
//获取审核状态
var getState=function(){
var app =getApp();
return new Promise(function(resolve, reject){
url: app.globalData.url,
method:"POST",
success:function(res){
console.log("审核状态", res)
if(res.data.success ==true){
var data = res.data.data;
resolve(data.platformAuditStatus);
}else{
resolve(0);
}
},
fail:function(){
reject(0);
}
})
})
}
//根据状态判断跳转还是继续执⾏
var judge=function(state){
return new Promise(function(resolve){
if(state !=1){
wx.showToast({
title:'请完善个⼈信息',
icon:'loading',
duration:1500
})
setTimeout(function(){
url:'/pages/myMessage/myMessage',
})
},1000)
resolve(false);
}else{
resolve(true);
}
})
}
//验证是否已审核,否则跳去完善个⼈信息
function canNavigate(){
var isTrue =getState().then(res =>{
judge(res).then(result =>{
return result;
})
})
return isTrue;
}
if(utils.canNavigate()){
//需要执⾏的操作
}
6.浮点数快速向下取整
(12.4/4.13)|0
// => 3
~~(12.4/4.13)
// => 3
7.循环
【1】遍历对象⽤for…in(数组也可以⽤实际还是把数组当成对象去遍历)
【2】简单遍历数组⽤for或forEach或for of
【3】需要将数组按照某种规则映射为另⼀个数组就应该⽤map()
1. map 和 forEach
forEach允许callback更改原始数组的元素,没有返回值。对于空数组是不会执⾏回调函数的。
使⽤场景: 并不改变数据,⽽只是想存⼊数据库或者打印出来。
var arr =[1,2,3,4,5];
var a=arr.forEach(function(value,index,arr){
value=value+7
})
console.log(a)
console.log(arr)
结果:
undefined
[1,2,3,4,5]
forEach()针对每⼀个元素执⾏提供的函数,对数据的操作会改变原数组。
var arr =[1,2,3,4,5];
var a=arr.forEach(function(value,index,arr){
arr[index]= value+7
})
console.log(a)
console.log(arr)
结果:
undefined
[8,9,10,11,12]
map返回⼀个新数组,不会改变原数组。map() 不会对空数组进⾏检测。
使⽤场景: 要改变数据值,返回⼀个新数组的时候。
var arr =[1,2,3,4,5];
var a=arr.map(function(value,index,arr){
return value +7
})
console.log(a)
console.log(arr)
结果:
[8,9,10,11,12]
[1,2,3,4,5]
forEach()和 map() 相同点:
(1)只能循环遍历数组,遍历对象报错forEach/map is not a function
(2)forEach() 和 map() ⾥⾯每⼀次执⾏匿名函数都⽀持3个参数:数组中当前项item,当前项的索引index,原始数组arr。
(3)匿名函数中的this都是指Window。
forEach()和 map() 不同点:
(1)forEach() 没有返回值;map() 有返回值,可以return 出来。
2. reduce
这个函数必须接收两个参数,把结果继续和序列的下⼀个元素做累积计算
//⽐如对Array求和,就可以⽤reduce实现:
var arr =[1,3,5,7,9];
return x + y;
});// 25
sort函数 js3. filter
“筛选”,把Array的某些元素过滤掉,然后返回剩下的元素
4. sort
“排序”,sort()⽅法默认把所有元素先转换为String再排序,不能直接对数字排序
[10, 20, 1, 2].sort(); //结果: [1, 10, 2, 20]
arr.sort(function(x, y){
if(x < y){
return-1;
}
if(x > y){
return1;
}
return0;
});
console.log(arr);// [1, 2, 10, 20]
//sort()⽅法直接对Array进⾏修改,它返回的结果仍是当前Array
var a1 =['B','A','C'];
var a2 = a1.sort();
a1;// ['A', 'B', 'C']
a2;// ['A', 'B', 'C']
a1 === a2;// true, a1和a2是同⼀对象
5. every
every()⽅法判断数组的所有元素是否满⾜测试条件。
var arr =['Apple','pear','orange'];
console.log(arr.every(function(s){
return s.length >0;
}));// true, 因为每个元素都满⾜s.length>0
console.log(arr.every(function(s){
LowerCase()=== s;
}));// false, 因为不是每个元素都全部是⼩写
6. find 和 findIndex
find()⽅法⽤于查符合条件的第⼀个元素,如果到了,返回这个元素,否则,返回undefined findIndex()⽅法⽤于查符合条件的第⼀个元素,如果到了,返回这个元素的索引,否则,返回-1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。