wx.setStorageSync存储对象并且不覆盖原有数据
时间: 2024-03-02 13:49:46 浏览: 23
`wx.setStorageSync()` 存储的数据必须是字符串或 ArrayBuffer 类型,不能是其他类型如对象等。如果需要存储对象,可以使用 `JSON.stringify()` 方法将其转换成字符串类型,然后再存储到本地缓存中。但是,使用 `wx.setStorageSync()` 存储对象时,每次存储都会覆盖原有的数据,如果需要不覆盖原有数据,可以按照以下步骤进行操作:
1. 先使用 `wx.getStorageSync()` 获取原有的数据,如果原有数据不存在,则将其初始化为空对象 `{}`。
2. 将新的数据与原有数据合并为一个新的对象。
3. 使用 `JSON.stringify()` 将合并后的对象转换成字符串类型,然后存储到本地缓存中。
以下是一个示例代码,用于向本地缓存中添加多个对象,并且不覆盖原有数据:
```javascript
// 先获取原有的数据
let oldData = wx.getStorageSync('data') || {}
// 合并新数据和原有数据
let newData = {
name: 'Tom',
age: 18
}
let data = Object.assign({}, oldData, newData)
// 存储合并后的数据到本地缓存
wx.setStorageSync('data', JSON.stringify(data))
// 从本地缓存中获取数据
let res = JSON.parse(wx.getStorageSync('data'))
console.log(res) // 输出:{ name: 'Tom', age: 18 }
```
在上面的示例代码中,我们首先使用 `wx.getStorageSync()` 获取原有的数据,如果原有数据不存在,则将其初始化为空对象 `{}`。然后,我们将新的数据和原有数据合并为一个新的对象 `data`。最后,我们使用 `JSON.stringify()` 将合并后的数据转换成字符串类型,并存储到本地缓存中。通过输出,我们可以看到成功地向本地缓存中添加多个对象,并且不会覆盖原有数据。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)