本人零基础,在微信小程序开发中,想在搜索页面显示关键词,设想当用户输入某个关键词(比如“大学”)的时候,能弹出相应的关键词,点击之后就可以按照弹出的关键词进行搜索。
目前通过调取数据库的数据,已经拿到符合条件的集合,然后通过.map拿到集合中的标签tags:
click_search() {
var key = this.data.key // 用户输入的搜索内容
db.collection('demo')
.where(_.or([{
title: db.RegExp({
regexp: key,
options: 'i'
})
}, {
tags: db.RegExp({
regexp: key,
options: 'i'
})
}]))
.get()
.then(res => {
var key = [this.data.key] // 将关键词从字符串转为数组
if (wx.getStorageSync('historyStorage').length > 0) { // 如果以前有搜索历史,那么将搜索历史进行拼接
wx.setStorageSync('historyStorage', key.concat(wx.getStorageSync('historyStorage')))
} else { // 如果没有,将目前输入的搜索内容存到本地缓存
wx.setStorageSync('historyStorage', key)
}
if (res.data.length == 0) { // 如果用户输入的内容没有搜索结果,
this.setData({
Noresult: true, // 显示无搜索结果
showhistory: false
})
} else { // 否则 将结果存入data进行渲染
this.setData({
search_list: res.data,
})
}
})
},
var arr = search_list
var newArr = arr.map((item) => {
return item.tags
})
console.log(newArr)
})
拿到的tags内容如下:
0:[“杭州大学”,“西安大学”,“南京大学”]
1:[“长沙大学”,“财经学院”,“贵阳学院”]
2:[“武汉农大”,“湘潭大学”,“中南民院”]
3:[“西南科技大学”,“东北体育学院”,“中央民院”]
4:[“江西师大”,“西南理工学院”,“东北科技学院”]
尝试使用filter和将变量引入正则表达式的方法来,但是失败了。不知道是方法错了,还是正则表达式引入变量的时候错了……
data:{
key:"大学”
}
var keywords = this.data.key
var reg = new RegExp(+keywords, "gi")
var result = newArr.filter(function (reg) {
return result
})
console.log(result)
// 打印出来的 resul 为空数组
想请教一下,这种情况应该用什么方法比较好,最后能得出一个匹配的数组在页面渲染出来。