小程序json数组操作
if(list.length>8)
{
// list.pop();//删除最后的元素
list.shift();//删除前面元素
}
var datalist =list.concat(e.detail.values[2])//加入常用城市
let data = JSON.stringify(datalist)//数组对象转成字符串以供存储
// debugger
wx.setStorageSync('citylist',data ) //存储数组json
push()方法可以在数组的末属添加一个或多个元素
shift()方法把数组中的第一个元素删除
unshift()方法可以在数组的前端添加一个或多个元素
pop()方法把数组中的最后一个元素删除
splice(index, 1)删除数组的指定下标元素
删除数组的指定下标元素
let index= e.currentTarget.dataset.index
let rawMaterialList = this.data.rawMaterialList
rawMaterialList.splice(index, 1)
this.setData({
rawMaterialList
})
需求是查询城市之后如果没有重复就保存在常用城市里,常用城市最多为9个,覆盖最早添加的城市。



数据存储函数,用法详见代码里,注释很清楚
//确定选择
areaConfirm(e) {
let pages = getCurrentPages()
let prevPage = pages[pages.length - 2];
prevPage.setData({
isCity: 1,
currentCity: e.detail.values[2].name,
currentCode: e.detail.values[2].code
})
this.setData({
["registerForm.province"]: e.detail.values[0].code,
["registerForm.provinceName"]: e.detail.values[0].name,
["registerForm.city"]: e.detail.values[1].code,
["registerForm.cityName"]: e.detail.values[1].name,
["registerForm.county"]: e.detail.values[2].code,
["registerForm.countyName"]: e.detail.values[2].name,
areaDialog: false
})
wx.navigateBack({
delta: 1,
})
var list= this.data.cityList//常用城市数组,元素为字典[{name:"",code:""}]
/*
* @判断函数(推荐变量接收结果)
* @返回值: Boolean
* 如果返回true 则表示数组中有相同项
* 如果返回false 则表示数组中没有相同项
* 注意:该函数只判断一个属性是否相等,
* 如果你需要严格的判断则需要继续加if条件
*/
var res = list.some(item => {
// 根据城市编码code判断是否重复
if(item.code == e.detail.values[2].code) {
return true;
}
})
// debugger
// 业务逻辑
if(res){
//重复
}else
{
if(list.length>8)
{
// list.pop();//删除最后的元素
list.shift();//删除前面元素
}
var datalist =list.concat(e.detail.values[2])//加入常用城市
let data = JSON.stringify(datalist)//数组对象转成字符串以供存储
// debugger
wx.setStorageSync('citylist',data ) //本地存储数组json
}
},
进入城市页面会在onShow: function ()方法里调用,获取本地存储的json数组
//获取常用城市
getCity() {
var list= this.data.cityList
var value = wx.getStorageSync('citylist')
// var datalist = new Array()
var datalist =list.concat(JSON.parse(value))
debugger
this.setData({
cityList: datalist
})
},
wx.getStorageSync('citylist'),根据key获取存储的城市数组对象
JSON.parse(value),把字符串转成数组对象;
list.concat(),数组相加
网友评论