• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

前端JavaScript实现本地模糊搜索功能的方法实例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、项目前景

随着vue、react在实际开发中应运越来越广泛,前端对数据的处理越来越多。这篇文章主要目的就是为了对服务端返回的数据进行处理,按照条件进行模糊查询,从而减少向服务端发送请求的次数,来提高性能和用户体验。下面以一个简单的DEMO,来实现模糊查询的功能:

测试用的数据如下:

var data = [{
            "title": "你的失恋修复期有多长?",
            "title_image": "https://img.doutuimao.net/dtmimg/b7c9ec393414982682e5a477eb995b55",
            "desc": "美食餐饮测试一下你的失恋修复期有多长",
            "id": "2",
            "num": 951357,
            "flag": "01"
    },
    {
            "title": "你的撒娇指数有多高?",
            "title_image": "https://img.doutuimao.net/dtmimg/60d8ed86d1f72357c194506270c72ac1",
            "desc": "美食餐饮会撒娇的女人最好命,你有多会撒娇?你撒起娇来魅力又是怎么样的?快来测测吧!",
            "id": "3",
            "num": 963258,
            "flag": "01"
    },
    {
            "title": "你未来的结婚方式?",
            "title_image": "https://img.doutuimao.net/dtmimg/538632e75159ce8e586778d289c66a11",
            "desc": "相信很多人都对自己未来的结婚方式充满期待,想知道你未来的结婚方式吗?",
            "id": "4",
            "num": 879564,
            "flag": "01"
    },
]

二、涉及知识点

Object.assign()的用法

Object.assign方法用来将源对象(source)的所有可枚举属性,复制到目标对象(target)。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。

// 处理原始数组
let arrnew = data.map((item, index) => {
    return Object.assign({}, {
            'desc': item.desc,
    })
})

filter()方法

filter()方法用于过滤数组元素。该方法创建一个新数组, 其中包含通过所提供函数实现的测试的所有元素。filter()不会对空数组进行检测,也不会改变原始数组。

indexOf()模糊查询

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。与filter()方法配合,可以检测数组中是否包含输入的值,并返回。

var newData = arrnew.filter(item => {
    if (item.desc.indexOf(value) > -1) { //indexOf方法中如果xxx.indexOf("")返回值为0
            return item
    }
    return newData
})

DEMO完整代码如下:

<div class="wrap">
        <input type="text" id="demo">
        <ul id="newsBox">
        </ul>
</div>
function creat() {
        var value = input.value;
        var html = "";
        let arrnew = data.map((item, index) => {
                return Object.assign({}, {
                        'desc': item.desc,
                })
        })

        var newData = arrnew.filter(item => {
                if (item.desc.indexOf(value) > -1) { //indexOf方法中如果xxx.indexOf("")返回值为0
                        return item
                }
                return newData
        })


        if (newData.length > 0) {
                for (var i = 0; i < newData.length; i++) {
                        html += `<li>${newData[i].desc}</li>`
                }
        } else {
                html += `<li>暂无数据</li>`
        }
        ul.innerHTML = html;
}
creat()
input.onchange = function(e) {
        creat()
}

总结

到此这篇关于JavaScript实现本地模糊搜索功能的文章就介绍到这了,更多相关JS本地模糊搜索内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
JavaScript实现的七种排序算法总结(推荐!)发布时间:2022-02-05
下一篇:
手把手教你用vue3开发一个打砖块小游戏发布时间:2022-02-05
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap