实现列表过滤

第一种方法:更新列表所有元素的可见状态

for (let i = 0; i < items.length; i++) {
    const item = items[i]
    const show = item.name.includes(filter);
    if (this.list[i].hidden == show)
        this.list[i].hidden = !show
}

第二种方法:更新文本内容以及创建和删除元素

const items = this.items.filter(x => x.name.includes(filter))
for (let i = this.list.length; i < items.length; i++)
    this.list.push(this.createItem(items[i]))
const len = this.list.length;
for (let i = 0; i < len; i++) {
    if (i < items.length) {
        const item = items[i]
        this.list[i].textContent = item.name
    } else
        this.list[i].remove()
}

区别:

  1. 隐藏状态更新: 在第一种方法中,仅更新 hidden 属性。第二种方法中,可能需要添加和删除元素。某些情况下,隐藏元素可能仍然占据布局空间,而删除元素则不会。
  2. 性能优势:用 filter 明确地筛选需要处理的元素,减少了很多潜在的工作。在处理大量数据或需要频繁更新的情况下,第二种方法可能仍然略胜一筹。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、列表推导式:用来创建列表 > 所谓的列表推导式,就是指的轻量级循环创建列表 格式:列表推导式的常见形式: my...
    MAVIS_42bf阅读 648评论 0 0
  • 一、概念介绍 Vue.js和React.js分别是目前国内和国外最火的前端框架,框架跟类库/插件不同,框架是一套完...
    刘远舟阅读 1,096评论 0 0
  • JavaScript,通常缩写为 JS,是一种解释执行的编程语言。它是现在最流行的脚本语言之一。 JavaScri...
    神齐阅读 5,029评论 1 32
  • #前端基础 # ## JavaScript基础 ## ###渲染机制与变量 ### script代码为什么放到bo...
    hmg阅读 288评论 1 1
  • 081.什么是 Polyfill ? Polyfill 指的是用于实现浏览器并不支持的原生 API 的代码。 比如...
    造了个轮子阅读 321评论 0 0