首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简化自动建议的设计

简化自动建议的设计
EN

Stack Overflow用户
提问于 2022-06-23 17:16:41
回答 1查看 29关注 0票数 1

在我的代码中有一个相当复杂的结构,它在const matchedSuggestions中。这个建筑负责自动建议.例如:有几个男性的名字(亚当,禤浩焯,阿诺德,迈克)。用户输入第一个字母"A“,并看到自动建议-亚当,禤浩焯,阿诺德。然后,他输入字母"D“,并保留在自动建议-亚当,禤浩焯。诸若此类。

是否有可能以某种方式简化代码的这一部分?

代码语言:javascript
复制
const onChange = (e) => {
  const { value } = e.target;
  setInput(value)

  if(value.length < 1) { setSuggestedTags([]); setIsValid([]);return; }
  
  const matchedSuggestions = tagSuggestions.filter((s) => {
    return s.slice(0, 2).search(value.slice(0, 2)) > -1 
        && s.slice(0, 1).search(value.slice(0, 1)) > -1
        && s.slice(0, 3).search(value.slice(0, 3)) > -1
        && !tags.includes(s)
  })
  setSuggestedTags(matchedSuggestions); 

  if (e.target.value) {
    setIsValid(() => /^[1-5][0-9]?[0-9]?$|^100$/.test(e.target.value));
  } else {
    setIsValid(true);
  }
  setInput(value);
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-23 17:31:02

您可以获取输入字符串的长度,并将其用作切片索引。更好的是,您可以使用startsWith,如果需要将其归一化为大小写,如

代码语言:javascript
复制
 value = value.toLowerCase();             // normalize
 tagSuggestions.filter(s =>
     s.toLowerCase().startsWith(value) && // or includes(value) in case you want to validate part of the string
     !tags.includes(s)                    // what is this for?
 );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72734182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档