微信小程序开发交流qq群   173683895

   承接微信小程序开发。扫码加微信。

需求:保存用户搜索的3次历史记录,新的代替旧的,重复的不录入。

这里有几种情况:

1.第一次搜索,搜索的历史缓存数组为空,就直接添加当前搜索的值到数组

2.搜索的历史缓存数组长度小于3时,遍历数组,如果当前搜索的值与遍历的下标有相同的值,就删除数组的下标,并且在结尾添加当前搜索的值到数组末尾

3.搜索的历史缓存数组长度大于3时,先定义一个变量 “num” 用来记录有几次相同的值,遍历数组,如果当前搜索的值与遍历的下标有相同的值,就删除数组的下标并且 num 自增,如果 num 的值大于0,在结尾添加当前搜索的值到数组末尾,如果 num 的值等于0,就删除数组的第一个下标(最早的搜索记录),在结尾添加当前搜索的值到数组末尾。

JS实现代码:

// 获取账号let broadbandNumber = account.broadbandNumberconsole.log('broadbandNumber', broadbandNumber)// 获取缓存的搜索历史记录,如果第一次就设置没默认的空数组let storage_account = wx.getStorageSync('storage_account') ? wx.getStorageSync('storage_account') : [];if (storage_account.length == 0) {storage_account.push(broadbandNumber);} else if (storage_account.length < 3) {storage_account.forEach((item, idx) => {if (item == broadbandNumber) {console.log('item == broadbandNumber', item)storage_account.splice(idx, 1);}})console.log('storage_account111111111', storage_account)storage_account.push(broadbandNumber);} else {let num = 0;storage_account.forEach((item, idx) => {if (item == broadbandNumber) {storage_account.splice(idx, 1);num++}})if (num > 0) {storage_account.push(broadbandNumber);} else {storage_account.splice(0, 1);storage_account.push(broadbandNumber);}console.log('stutas22222222222', stutas)}wx.setStorageSync('storage_account', storage_account)

JS 保持数组长度为3位并且值不重复相关推荐

  1. js获取数组长度-length属性的介绍

    js获取数组长度-length属性的介绍 length属性 length 属性不能体现数组元素的实际个数 length 属性值动态变化对数组的影响 length属性 在 js 中获取数组长度非常简单, ...

  2. js获取数组长度,对象成员个数字、符串字数

    Javascript怎么得到数组长度(也就是数组的元素个数)? Javascript怎么获取对象的成员个数? 你肯定想到了array.length!? 那么我们来测试一下下面这个例子. <scr ...

  3. js提取数组某一项的属性值,组成新数组

    js提取数组某一属性值,将每一项的某个属性之,组成新数组. var arr = [{ id: 1, name: "张三" },{ id: 2, name: "李四&quo ...

  4. js根据数组长度生成新数组

    for+push var arr = new Array(); for(var i=0;i<100;i++){arr.push(i); } console.log(arr); Array.fro ...

  5. html判断数组中存在不,js判断数组中是否已存在某个值,indexOf的使用说明

    indexOf()方法返回在该数组中的元素位置,如果它不存在则返回-1 //数组格式为[ "Name","LangShen","AGE",& ...

  6. js判断数组中对象是否存在某个值

    var arr = [{name: "回锅肉",value: "0" }, {name: "小炒肉",value: "1" ...

  7. JS对象数组中依据某个属性的值分组

    问题:需要在对象数组中根据某个属性值进行归类或者分组 const dataList = [{name: 'Apple',type: 'Fruit',price: '¥1.5'},{name: 'Ban ...

  8. js 判断数组中对象是否存在某个值,应用到some()方法

    let arr = [{"pmdm": "502429","wzpm": "16绶带","year" ...

  9. 【XJB造轮子】独立手写实现JS中数组的部分方法

    心态浮躁的我在自己设想的小项目写不下去的时候跑过来没事干重新弄DS玩 看了下<学习JS数据结构与算法>的第二章并写了一下这几个方法: pop,shift,unshift 1.myUnshi ...

最新文章

  1. php工程模式,PHP设计模式(八):工厂模式
  2. apache.camel_Apache Camel 2.12 –支持后退,以减少不太积极的轮询路线
  3. unityscrollview生成大量_superscrollviewforUGUI的一些使用心得
  4. AOP之proceedingjoinpoint和joinpoint区别(获取各对象备忘)、动态代理机制及获取原理代理对象、获取Mybatis Mapper接口原始对象...
  5. 千万不要被这些手机充电的谣言给误导了!现在了解还来得及
  6. 如何解决使用webpack打包之后,font-awsome路径不对的问题,终极解决方法
  7. linux suse最新版本,SUSE Linux Enterprise Server 15 正式发布
  8. 最后的人 - 主机程序员十年的分享
  9. javascript基础知识(6) 对象
  10. C语言求1+2!+3!+...+20!
  11. 微波工程(4)——阻抗匹配
  12. go 的基本命令详解
  13. 面经自己汇总(三维视觉算法机器学习深度学习)——持续更新
  14. BUUCTF--[GUET-CTF2019]number_game
  15. 成功解决 ARP项添加失败:请求的操作需要提升
  16. 计算机改显存会有啥影响,显卡内存越大越好吗?显存对计算机速度(全文)的影响...
  17. 解决windows10桌面输入法不见问题
  18. 机器人模型导入MATLAB(一):导入Simscape 1G/2G
  19. 计算机网络CPT实验
  20. 平衡串联超级电容器的策略

热门文章

  1. 一起学Hadoop——实现两张表之间的连接操作
  2. 如何在Terminal命令行模式下运行Objective-C
  3. 你是如何快捷、高效获取新知识的?
  4. 分布式计算开源框架Hadoop入门实践
  5. Apache URL重定向避免网址结尾斜线问题
  6. Visual Studio 2005 IDE 技巧和窍门
  7. scanf()函数的用法和实践
  8. Golang反射机制的实现分析——reflect.Type方法查找和调用
  9. 图像集存储成MNIST数据集格式实现
  10. OpenCV代码提取:flip函数的实现