var arr = [15,12,11, 28, 11, 11, 28, 28, 28, 29, 29, 29, 11];
var tempArr = [];
var indexArr= [];
for (var i = 0; i < arrlength; i++) {
if (tempArrindexOf(arr[i]) == -1) {
tempArrpush(arr[i]);
indexArrpush(i)
} else if (tempArrindexOf(arr[i])>=0){
for(var j = 0;j<tempArrlength;j++){
if (tempArr[j] == arr[i]) {
tempArrsplice(j, 1, tempArr[j]);
indexArrsplice(j, 1, i);
}
}
}
}
consolelog('去重',tempArr,indexArr)
结果:
tempArr:[15, 12, 11, 28, 29]
indexArr:[0, 1, 12, 8, 11]
var arr = [15,12,11, 28, 11, 11, 28, 28, 28, 29, 29, 29, 11];
var data = [];
for(var i = 0;i<arrlength;i++){
var newTag = false;
if(datalength > 0){
for(var z = 0;z < datalength;z++){
if(arr[i] == data[z]){
newTag = true;
}
if(z == datalength - 1 && !newTag){
datapush(arr[i]);
}
}
}else{
datapush(arr[i])
}
}
consolelog('去重', data)
var tapArr = [];
for(var i = 0;i<datalength;i++){
var tag = 0;
for(var j = 0;j<arrlength;j++){
if(data[i] == arr[j]){
tag = j;
}
if(j == arrlength - 1){
tapArrpush(tag)
}
}
}
consolelog('去重:::',tapArr)
因为以前都是用Vue开发,写项目,自然而然的就习惯了vue的双向绑定机制,开发中也觉得这真是方便,但是在最近的小程序开发中,我在动态往数组中传值,可是吃尽了苦头,怎么绑都绑定不上。当然,也并不是再说小程序的不好,各有各的开发理念,各有各的好,所以在这里写下一些心得,一方面让自己别忘了,一方面也希望和我一起遇到这个问题的小伙伴们,别再走这个坑!
言归正传:
加入此刻我的data中,有一个数组
然后我定义了一个方法,需要往这个lists数组中动态的添加数据
这个方法是可以往data中的lists中添加对象的,这我相信大家都能做得到,很简单
但是,当我们要改变这个lists中某个对象下的key:value值呢?当时我就在这里卡了好久,我一开始想的的是在thissetData()这个函数中,把key值改为 lists[下标]属性值 但是当我这样写了以后,控制台立马报错,原因是因为,他在data中并没有找到你这个key值,也就是说我们这个写的方法是错误的,但是按照道理思路是没错的,所以也就有了下面这个方法,可以改变对应的lists里面的属性值
这样就可以了,就能改变data中数组里面任意的值,不过要谨记一点,就是,一定要拿中括号[xx]包裹你要改变的key值,不然也是会报错的!好了,其实我感觉我说了很多没必要的话,但是,我就当记笔记了!希望大家和自己继续努力,学习永无止境点击了解更多加盟项目
先上一段官方文档
文档说绝大多数初始化工作都在 attached 生命周期进行,但是小程序组件数据分为组件的内部数据 data: {} 和从页面传递过来的 properties: {} 。但是有个问题是在组件的 attached 中无法拿到使用组件的页面中setData的值。
给组件传递myString
组件接受myString
所以可以看出在组件里 mySrting 在 created 取的是组件的默认值, attached 取的是页面里 data 的初始数据, ready 取的才是页面 setData 之后的值。具体原理应该要研究下组件的生命周期函数的源码了,可能是在组件 attached 之后页面才 onLoad 。反正直接在组件里使用 mySrting 就不会有这些问题,但如果想用页面 setData 后的 myString 来对组件的数据初始化,就只能放在组件的 ready 里而不能放在 attached 里、
let userInfo = {}; //需要传递的参数,这里用对象举例。
let pages = getCurrentPages(); //返回pages的所有信息;数组格式
let prevPage = pages[ pageslength - 2 ]; //返回上一个页面的所有信息 上一级为-2
prevPagesetData({
user:userInfo //user为上个页面需要修改的数据,如data里面的数据,数据格式要对应。
});
wxnavigateBack({
delta:1 // 返回上一级页面。
})
永久。
对于短生命周期数据存储来说,主要是以小程序启动到彻底关闭为周期的数据,而对于长生命周期或者隐私数据存储来说,小程序关闭后即便再重启数据依旧会存在的,或者说涉及到用户的隐私信息并且需要重复使用,因此数据是存数在本地缓存的。
1、新建一个project小程序项目。
2、在project项目内,新建一个index模块来从数据库获得数据,并将数据输出在indexwxml页面。
3、在index模块中indexjs页面,在onLoad中使用wxrequest方法向服务端文件请求数据。url为请求数据的地址。data为传输的参数,这里设置为空。method为传递参数的方式,header用于设置请求的数据类型,success是成功获得数据后的 *** 作。
4、在indexwxml页面,使用for循环遍历输出indexjs传递过来的数据data,通过item将data数据输出在页面。
5、在服务端新建一个apiphp页面来接收微信小程序的数据请求。
6、最后编译微信小程序,查看从数据表type获得数据内容,成功从数据库读取数据并输出在页面上
以上就是关于微信小程序-数组去重保留下标最大的全部的内容,包括:微信小程序-数组去重保留下标最大的、关于微信小程序开发中如何动态的往数组中添加对象,并进行更改、小程序组件里的数据传递等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)