题解 | #智能提示#
智能提示
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,反正我觉得正确的应该这么写,但是为了通过用例。。。。

查看4道真题和解析