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