Si quiero obtener un valor del objeto, pero el caso know diferente, no coincidirá: "Hello" no coincidirá con "hello" . ¿Hay otro trabajo para esto?
function ct(e) { var know = { "Hi": "Hello", "How are you?": "Great", "Bye": "Have A Nice Day !", "Hello": "Hi , Whats Up", "What's your name?": "Claire Rachael" }; let t = document.createElement("span"); t.setAttribute("class", "chatMessage left"); if (e in know) { setTimeout(() => { t.textContent = "Typing..."; d.appendChild(t); g = d.getAttribute("data-bottom") ? d.getAttribute("data-bottom") : 0; if (parseInt(g) < 200) d.scrollTo(0, d.scrollHeight); }, 2000); setTimeout(() => { t.textContent = know[e]; d.appendChild(t); g = d.getAttribute("data-bottom") ? d.getAttribute("data-bottom") : 0; if (parseInt(g) < 200) d.scrollTo(0, d.scrollHeight); else alert("new message"); }, 6000) } else { t.textContent = "I don't understand"; d.appendChild(t); } }No puedes hacer eso con in , no.
Puede crear un mapa de las propiedades tecleadas por su nombre en minúsculas, luego buscar en ese mapa usando solo valores en minúsculas:
const knowMap = new Map(Object.entries(know).map(([key, value]) => [key.toLowerCase(), value])); const elower = e.toLowerCase(); // ... if (knowMap.has(elower)) { // ...you can use `knowMap.get(elower)` here to get the value... // ...eg: `t.textContent = knowMap.get(elower);` }Ejemplo en vivo:
var know = { "Hi": "Hello", "How are you?": "Great", "Bye": "Have A Nice Day !", "Hello": "Hi , Whats Up", "What's your name?": "Claire Rachael" }; const knowMap = new Map(Object.entries(know).map(([key, value]) => [key.toLowerCase(), value])); // ... function test(key) { const keylower = key.toLowerCase(); if (knowMap.has(keylower)) { const value = knowMap.get(keylower); console.log(`value for "${key}" is "${value}"`); } else { console.log(`No match for key "${key}"`); } } test("Hi"); test("HI"); test("hi"); Si sabes que ninguna de tus propiedades tiene el valor undefined , puedes evitar ir al mapa dos veces:
const value = knowMap.get(elower); if (value !== undefined) { // ...use `value` here... }Ejemplo en vivo:
var know = { "Hi": "Hello", "How are you?": "Great", "Bye": "Have A Nice Day !", "Hello": "Hi , Whats Up", "What's your name?": "Claire Rachael" }; const knowMap = new Map(Object.entries(know).map(([key, value]) => [key.toLowerCase(), value])); // ... function test(key) { const value = knowMap.get(key.toLowerCase()); if (value !== undefined) { console.log(`value for "${key}" is "${value}"`); } else { console.log(`No match for key "${key}"`); } } test("Hi"); test("HI"); test("hi");