题解 | #智能提示#

智能提示

https://www.nowcoder.com/practice/efccf73b4ceb4446b6d71127f874e6d3

function suggest(items) {
    let input = document.querySelector(".js-input");
      let suggest = document.querySelector(".js-suggest");
      var count = 0;
      let ul = document.querySelector("ul");
      ul.innerHTML = "";
      if (input.value.trim()) {
        let str = input.value.trim();
        str ='.*'+ [...str]
          .map((item) => {
           if (/\(|\.|\*|\)|\[|\]|\?/g.test(item)) {
              return "\\" + item + ".*?";
            } else {
              return item + ".*?";
            }
          })
          .join("");
        //   str = str.replace(/\D|\W|\S/g,"\\$&")
        console.log(str);
        let reg = new RegExp(str, "g");
        console.log(reg);
        items.forEach((item) => {
          //console.log(reg.test(item),item);

          if (reg.test(item)) {
            console.log(reg.test(item),item);
            let li = document.createElement("li");
            li.innerText = item;
            console.log(item);
            ul.appendChild(li);
            count++;
          }
        });
        console.log(count, items.length);
        if (count == 0) {
          suggest.classList.add("hide");
        } else {
          suggest.classList.remove("hide");
        }
      } else {
        suggest.classList.add("hide");
        ul.innerHTML = "";
      }
    }
//为了过测试改成这个版本,原版是写在addEventListener里的,但是那样通过不了,那个正则就是为了测试用例乱写的 
function suggest(items) {
     let input = document.querySelector(".js-input");
      let suggest = document.querySelector(".js-suggest");
      var count = 0;
      let ul = document.querySelector("ul");
      ul.innerHTML = "";
input.addEventListener("input", function (e) {
        if (input.value.trim()) {
            console.log(1)
          let str = input.value.trim();
          str = ".*" + [...str].map((item) => {
                if (/\(|\.|\*|\)|\[|\]|\?/g.test(item)) {
                  return "\\" + item + ".*?";
                } else {
                  return item + ".*?";
                }
              })
              .join("");
          //   str = str.replace(/\D|\W|\S/g,"\\$&")
          console.log(str);
          let reg = new RegExp(str, "g");
          console.log(reg);
          items.forEach((item) => {
            //console.log(reg.test(item),item);

            if (reg.test(item)) {
              console.log(reg.test(item), item);
              let li = document.createElement("li");
              li.innerText = item;
              console.log(item);
              ul.appendChild(li);
              count++;
            }
          });
          console.log(count, items.length);
          if (count == 0) {
            suggest.classList.add("hide");
          } else {
            suggest.classList.remove("hide");
          }
        } else {
          suggest.classList.add("hide");
          ul.innerHTML = "";
        }
      });
    }
emm,反正我觉得正确的应该这么写,但是为了通过用例。。。。

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
04-02 16:49
门头沟学院 Java
_bloodstream_:我也面了科大讯飞,主管面的时候听说急招人优先考虑能尽快实习的,我说忙毕设,后面就一直没消息了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务