微信小程序开发,wx.getStorageSync('visits')visits的数据是[ { "date": "2023-05-08", "avenues": { "自然来访": 157, "转介": 71, "自拓": 3,"电call": 0, "老客户": 2}, "dataCount": 233 }, { "date": "2023-05-09", "avenues": { "自然来访": 12, "转介": 9, "自拓": 2, "电call": 0, "老客户": 6 }, "dataCount": 29 }, ]现在需要判断里面是否有重复值,如果有重复值就剔除。
时间: 2023-08-22 13:05:39 浏览: 75
可以通过遍历 visits 数组,并使用 Set 对象来判断是否有重复值,如果有,就使用数组的 splice 方法将该元素从数组中删除。具体代码如下:
```
let visitedDates = new Set();
for(let i = 0; i < visits.length; i++) {
let currentDate = visits[i].date;
if(visitedDates.has(currentDate)) {
visits.splice(i, 1);
i--; // 因为删除了一个元素,所以需要将 i 向前移动一位
} else {
visitedDates.add(currentDate);
}
}
```
这段代码会遍历 visits 数组,并使用 Set 对象 visitedDates 来存储已经遍历过的日期。如果当前日期已经存在于 visitedDates 中,就说明这是一个重复的数据,需要将该元素从 visits 数组中删除。如果当前日期不存在于 visitedDates 中,就将其添加到 visitedDates 中。
相关问题
微信小程序开发,wx.getStorageSync('visits')的数据是[ { "date": "2023-05-08", "avenues": { "自然来访": 157, "转介": 71, "自拓": 3,"电call": 0, "老客户": 2}, "dataCount": 233 }, { "date": "2023-05-09", "avenues": { "自然来访": 12, "转介": 9, "自拓": 2, "电call": 0, "老客户": 6 }, "dataCount": 29 }, ]现在需要判断里面是否有重复值,如果有重复值就剔除。
可以使用一个 Set 来记录已经出现过的日期,然后遍历 visits 数组,对于每个元素检查其日期是否已经在 Set 中出现过,如果已经出现过,则说明该元素重复,需要将其从 visits 数组中删除。最后,使用 wx.setStorageSync 方法将更新后的数据存储到本地缓存中。具体代码如下:
```
let visitedDates = new Set();
for(let i = 0; i < visits.length; i++) {
let currentDate = visits[i].date;
if(visitedDates.has(currentDate)) {
visits.splice(i, 1);
i--; // 因为删除了一个元素,所以需要将 i 向前移动一位
} else {
visitedDates.add(currentDate);
}
}
wx.setStorageSync('visits', visits);
```
这段代码中,我们使用一个 Set visitedDates 来记录已经出现过的日期。然后使用一个 for 循环遍历 visits 数组,对于每个元素,首先获取其日期 currentDate,然后检查 visitedDates Set 中是否已经包含了该日期。如果包含该日期,就说明该元素重复,需要将其从 visits 数组中删除。如果 visitedDates Set 中不包含该日期,则将该日期添加到 visitedDates Set 中,以便后续的判断。最后,使用 wx.setStorageSync 方法将更新后的数据存储到本地缓存中。
微信小程序开发,在js页Page({ data: { current: wx.getStorageSync('visits').length, },这样写current为什么取不到length?
可能是因为在调用 `wx.getStorageSync('visits').length` 时,`wx.getStorageSync('visits')` 返回的是一个异步对象,而此时该异步对象还未完成,因此调用 `.length` 会返回 undefined。
为了解决这个问题,我们可以将获取 visits 数据的逻辑放在页面的 `onLoad` 生命周期函数中,确保数据已经获取到后再进行操作。具体代码如下:
```
Page({
data: {
current: 0
},
onLoad: function() {
let visits = wx.getStorageSync('visits') || [];
this.setData({
current: visits.length
});
}
});
```
这段代码中,我们使用 `wx.getStorageSync('visits')` 获取 visits 数据,如果该数据不存在,则将其设置为一个空数组。然后在 `onLoad` 生命周期函数中,将 visits 数组的长度设置为页面的 current 数据,以便在页面中使用。注意,由于 `wx.getStorageSync` 方法是同步方法,因此可以确保在 onLoad 函数中获取到 visits 数据。
阅读全文