微信小程序-数组去重保留下标最大的

微信小程序-数组去重保留下标最大的,第1张

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获得数据内容,成功从数据库读取数据并输出在页面上

以上就是关于微信小程序-数组去重保留下标最大的全部的内容,包括:微信小程序-数组去重保留下标最大的、关于微信小程序开发中如何动态的往数组中添加对象,并进行更改、小程序组件里的数据传递等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9823596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存