js对象跟数组多层嵌套,检测没有此数据就添加有则不添加以及超过限制条件删除操作
例如你需要这样格式的数据:
[{"name":"合肥市","arrey":[{"lat":"31.862323","long":"117.289267","name":"G+竞技网咖","address":"宿州路60号太阳城B1层"},{"lat":"31.876318","long":"117.349632","name":"H&M(瑶海万达广场店)","address":"临泉东路与和县路交叉口瑶海万达广场1层"},{"lat":"31.790946","long":"117.207581","name":"N(港澳广场)","address":"翡翠路与芙蓉路交口往北50米处港澳广场F1层"},{"lat":"31.883742","long":"117.280290","name":"U家鱼店","address":"蒙城路与义井路交叉口"},{"lat":"31.863728","long":"117.289816","name":"L‘OREAL(百大鼓楼名品中心店)","address":"宿州路96号百大鼓楼名品中心金座1层"},{"lat":"31.865195","long":"117.292521","name":"T.G","address":"宿州路老太阳城三楼55号"},{"lat":"31.864289","long":"117.294944","name":"e(合肥百盛)","address":"淮河中路77号合肥百盛F1层"},{"lat":"31.864579","long":"117.293090","name":"W.(海亚大世界)","address":"北含山路与淮河路步行街交叉口东北100米海亚大世界F3层N13"},{"lat":"31.610835","long":"117.883709","name":"s·deer","address":"东塘路巢湖万达广场1层"},{"lat":"31.704786","long":"117.301498","name":"宝文MALL","address":"南宁路与庐州大道交叉口西南150米"},{"lat":"31.804920","long":"117.223823","name":"置地广场D座","address":"天鹅湖南岸(绿轴西侧)"}]},{"name":"无为县","arrey":[{"lat":"31.290454","long":"117.931186","name":"东方家园B区","address":"军二路与渡江路交汇处"},{"lat":"31.450142","long":"117.895212","name":"横山","address":"无为县"}]},{"name":"安庆市","arrey":[{"lat":"30.530881","long":"117.069820","name":"文采花园F座","address":"旺园路南100米"}]}]
先从缓存中获取数据,判断当前数据是否在你获取的数据里面没有的话就添加进去,有的话就不添加,超过10个的话就删除
实现:
var obj = {
name: ‘合肥’,
arrey: [{
lat: ‘31.82057’,
long: ‘117.227308’,
name: ‘合肥汽车站’,
address: ‘合肥汽车站餐馆’
}]
}//点击的当前
wx.getStorage({
key: "bigKSarr",
success(res) {
console.log(res.data)
var bigKSarr = [];//命名大的数组
bigKSarr = res.data;
//判断有没有当前城市
let nameInside = bigKSarr.some(function (e) {
return JSON.stringify(e.name) === JSON.stringify(obj.name);
})
if (!nameInside) {
//没有就添加进去
bigKSarr.push(obj)
}
bigKSarr.forEach(function (el, i) {
if (el.name == obj.name) {
//同一个城市
let inside = el.arrey.some(function (item) {
return JSON.stringify(item) === JSON.stringify(obj.arrey[0]);
})
if (!inside) {
////判断是否包含在某个城市的下列里面没有则push进去有的话就不push
el.arrey.push(obj.arrey[0]);
}
}
//如果数组超过10个就删除第一个
if (el.arrey.length > 10) {
el.arrey.splice(0,1)
}
})
wx.setStorage({
key: "bigKSarr",
data: bigKSarr
})
},
fail(res) {
//第一次获取缓存失败
console.log(res)
var bigKSarr = [];//命名大的数组
var ksli = {
lat: e.currentTarget.dataset.latlog.split(",")[1],
long: e.currentTarget.dataset.latlog.split(",")[0],
name: e.currentTarget.dataset.name,
address: e.currentTarget.dataset.address
}//命名城市对应数组得单个对象
var ksliArr = [];
ksliArr.push(ksli)
var ksli = {
"name": appInstance.globalData.defaultCounty,
"arrey": ksliArr
}//这个是名字对应数组得li
bigKSarr.push(ksli)
wx.setStorage({
key: "bigKSarr",
data: bigKSarr
})
}
})
这个功能是在小程序缓存所需要的,所以上述代码用了,小程序获取小程序缓存的方法
js对象跟数组多层嵌套,检测没有此数据就添加有则不添加以及超过限制条件删除操作的更多相关文章
- vue中,对象数组多层嵌套时,更新数据更新页面
vue中的对象和数组的元素直接赋值修改时,是不能响应到view中去的 1.对象更新 this.a={title:'列表1’}; this.a.title='列表2’; <h1>{{a.ti ...
- JS 将json数组转为嵌套层级数组
ele UI 的树级菜单的数据要求是这种嵌套的,但是Ztree的老用发的是 var zNodes =[ { id:, pId:, name:"zTree Home", pid:0} ...
- JS对象和数组在谷歌浏览器中引用存储的表现
大家都知道JS的数据分为基本类型和引用类型.具体什么不说了,今天主要说说对象和数组作为引用类型在谷歌浏览器中的表现. 首先,问题是这么发现的.我在控制台使用console打印了一个数组,然后对数组进行 ...
- JS对象和数组深浅拷贝总结②
在实际开发中遇到过太多次深拷贝浅拷贝的问题.总结一下~ JS数据存储和深浅拷贝实际运用① 这是之前写过的一篇文章,解决浅拷贝深拷贝的问题只说了一种方法,今天来补充一下. 介绍深拷贝和浅拷贝都在上一篇文 ...
- js 对象,数组,字符串,相互转换
1:对象转换数组 let obj = {'val1':1, 'val2':2, 'val3':3, 'val4':4}; var arr = [] for (let i in obj) { //取键 ...
- JS对象和数组
/* 数组和对象 [JavaScript 权威指南 第五版] */ /* 对象: 是一个无序属性集合, 每个属性都有自己的名字和值 */ /* 创建对象简单方法, 对象直接量 */ var obj = ...
- 【转】潜说js对象和数组
/* 数组和对象 [JavaScript 权威指南 第五版] */ /* 对象: 是一个无序属性集合, 每个属性都有自己的名字和值 */ /* 创建对象简单方法, 对象直接量 */ var obj = ...
- JS对象 Array 数组对象 数组对象是一个对象的集合,里边的对象可以是不同类型的。数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的
Array 数组对象 数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个"下标",用来表示它在数组中的位置,是从零开始的 数组定义的方法: 1. 定 ...
- 检测js对象是不是数组类型?
面试时候被人问如何检测一个未知变量是不是数组类型,丢脸啊,老祖宗的脸都丢没了,这都不会,回家啃书本去吧!!! var a = [];方法一:Array.isArray([]) //true type ...
随机推荐
- OOA/OOD/OOP
转载自https://www.cnblogs.com/zzyoucan/p/3576932.html Object-Oriented Analysis:面向对象分析方法 是在一个系统的开发过程中进行了 ...
- C#的抽象类和接口,区别与相似
一.抽象类:抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们 ...
- Visual Studio 项目依赖
在解决方案上点击右键,选择项目依赖项 选择需要发布的所有依赖项目 主要是为了解决插件项目DLL无法生成的问题
- 读取FTP 图片文件,并显示,非下载
关于FTP,先从怎么创建开始说起,很简单,步骤就两个 ① 电脑-右键管理--本地用户组--添加用户名,密码(用于FTP的用户名.密码) ② IIS 新建FTP站点,命名,指定端口号.FTP文件路径 接 ...
- ok6410如何从sdram中启动uboot 调试 这是一个猜想还没有验证
1\在smdk6410.h中定义宏 //#define CONFIG_SKIP_LOWLEVEL_INIT 1 //#define CONFIG_SKIP_RELOCATE_UBOOT 12\将编译的 ...
- GO函数
函数定义 Go语言中定义函数使用func关键字. func 函数名(参数)(返回值){ 函数体 } 函数名:由字母.数字.下划线组成.但函数名的第一个字母不能是数字.在同一个包内,函数名也称不能重名( ...
- java数组集合元素的查找
java数组和集合的元素查找类似,下面以集合为例. 数组集合元素查找分为两类: 基本查找: 二分折半查找: 基本查找: 两种方式都是for循环来判断,一种通过索引值来判断,一种通过数组索引判断. 索引 ...
- react --- 搭建环境
搭建react开发环境的准备工作 1. node.js 稳定版本 2. 安装cnpm,用cnpm代替npm 3. 用yarn替代npm yarn的安装:npm install -g yarn 搭建re ...
- ElasticSearch(十一)Elasticsearch清空指定Index/Type数据
POST /index_name/type_name/_delete_by_query?conflicts=proceed { "query": { "match_all ...
- 重写用户模型时报错AttributeError: type object ‘自定义类’ has no attribute ‘USERNAME_FIELD’
view中导入:from django.contrib.auth.models import AbstractBaseUser settings.py中设置了:AUTH_USER_MODEL='app ...