You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于子串值筛选对象的JavaScript代码优化(ES6实现)

基于ES6特性优化数组对象筛选逻辑

优化后的代码

const usecases = [
    { usecaseId: 'Bill Gates', id: 1, description: 'CEO & founder, Microsoft' },
    { usecaseId: 'Mark Zuckerberg', id: 2, description: 'CEO, Facebook' },
    { usecaseId: 'Steve Jobs', id: 3, description: 'CEO & co-founder, Apple' },
    { usecaseId: 'Satya Nadella', id: 4, description: 'CEO, Microsoft' },
    { usecaseId: 'Elon Musk', id: 5, description: 'CEO, Tesla & SpaceX' },
    { usecaseId: 'Ginni Rometty', id: 6, description: 'CEO, IBM' },
    { usecaseId: 'Jeff Bezos', id: 7, description: 'CEO, Amazon' },
    { usecaseId: 'Larry Page', id: 8, description: 'CEO, Google' },
    { usecaseId: 'Jack Dorsey', id: 9, description: 'CEO, Twitter' },
    { usecaseId: 'Meg Whitman', id: 10, description: 'CEO, HP' },
    { usecaseId: 'Tim Cook', id: 11, description: 'CEO, Apple' },
    { usecaseId: 'Jeff Weiner', id: 12, description: 'CEO, LinkedIn' },
];

const str = "Bill Gates, Mark Zuckerberg, Tim Cook, Jeff Bezos, Steve Jobs";

// 将字符串分割为独立ID数组,转为Set提升查找性能
const targetIds = new Set(str.split(', '));

// 解构赋值+Set.has()完成筛选
const newArr = usecases.filter(({ usecaseId }) => targetIds.has(usecaseId));

console.log(newArr);

优化说明

  1. 精确匹配+性能升级:
    原代码用indexOf判断存在性,容易出现部分匹配的误判(比如把"Bill Gates Jr"误判为符合条件)。将字符串分割为独立ID数组并转为Set,既保证了精确匹配,又让查找操作的时间复杂度从O(n)降到O(1),数据量大时性能提升显著。
  2. 代码简洁性优化:
    在filter回调中使用对象解构({ usecaseId }),直接提取需要的属性,避免重复书写usecaseObj.usecaseId;同时去掉冗余的if判断,直接返回布尔值,逻辑更清晰。

简化版(无需精确匹配场景)

如果可以确定字符串中的ID不会出现部分匹配的情况,也可以用更简洁的写法:

const newArr = usecases.filter(({ usecaseId }) => str.includes(usecaseId));

内容的提问来源于stack exchange,提问作者Kiara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:52:37