微信小程序搜索关键词缓存记录去重

题目描述

搜索关键词缓存记录没有做去重处理
图片描述

题目来源及自己的思路

源码是网上的开源项目

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

let App = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    recentSearch: [],
    searchValue: '',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 获取历史搜索
    this.getRecentSearch();
  },

  /**
   * 获取历史搜索
   */
  getRecentSearch: function () {
    let recentSearch = wx.getStorageSync('recentSearch');
    this.setData({ recentSearch });
  },

  /**
   * 绑定输入值
   */
  getSearchContent: function (e) {
    this.data.searchValue = e.detail.value;
  },

  /**
   * 搜索提交
   */
  search: function () {
    if (this.data.searchValue) {
      // 记录最近搜索
      let recentSearch = wx.getStorageSync('recentSearch') || [];
      recentSearch.unshift(this.data.searchValue);
      wx.setStorageSync('recentSearch', recentSearch)
      // 跳转到商品列表页
      wx.navigateTo({
        url: '../category/list?search=' + this.data.searchValue,
      })
    }
  },

  /**
   * 清空最近搜索记录
   */
  clearSearch: function () {
    wx.removeStorageSync('recentSearch');
    this.getRecentSearch();
  },

  /**
   * 跳转到最近搜索
   */
  goSearch: function (e) {
    wx.navigateTo({
      url: '../category/list?search=' + e.target.dataset.text,
    })
  },

})

你期待的结果是什么?实际看到的错误信息又是什么?

虽然对功能没有多大影响,作为一个不折扣的完美主义者,肯请大神支招化腐朽为神奇,真诚感激!

阅读 3.2k
2 个回答

每次添加记录前先从之前记录过滤掉当前关键词, 保证不会重复, 而且新的关键词排在最前

let recentSearch = wx.getStorageSync('recentSearch') || [];
recentSearch = recentSearch.filter(item => item !== this.data.searchValue)
recentSearch.unshift(this.data.searchValue);
wx.setStorageSync('recentSearch', recentSearch)

clipboard.png

拿到recentSearch数组先去个重再setData就是了,如果你没有好的去重方法,下面这个怎么样,不知道你数组里面数据结构什么样的

const a = ['demo','test','demo','test'];
const newA = Array.from(new Set(a));
console.log(newA);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题