Estoy aprendiendo codificando, aquí tengo 'allNodes' una matriz de objetos y el objeto 'currentNodee', quiero verificar si allNodes contiene 'analizador' e 'id' que es igual a 'analizador' e 'id' de ' currentNodee' luego tome el valor 'analyser' e imprímalo, pero si, por ejemplo, 'allNodes' tiene la misma identificación pero su analizador es 'indefinido', entonces no imprima nada.
Qué estoy haciendo mal aquí ? cualquier idea es apreciada
const allNodes = [ { analyser: undefined, id: 7 }, { analyser: "abc", id: 6 }, ]; const currentNodee = { analyser: "abc", id: 7 }; console.log( allNodes.find((option: any) => { option.id === currentNodee.id && option?.analyser === currentNodee?.analyser; }) );El inglés no es mi lengua materna, por lo que podría haber errores.
const allNodes = [ { analyser: undefined, id: 7 }, { analyser: "abc", id: 6 }, ]; const currentNodee = { analyser: "abc", id: 7 }; const result = allNodes.find(node => (node.analyser === currentNodee.analyser) && (node.id === currentNodee.id)) console.log(!result ? 'No result found' : result);A continuación se presenta una posible forma de lograr el objetivo deseado.
Fragmento de código
const rd = document.getElementById("rd"); const btn = document.getElementById("myBtn"); const btn2 = document.getElementById("myBtn2"); const allNodes = [{ analyser: undefined, id: 7 }, { analyser: "abc", id: 6 }, ]; const currentNodee = { analyser: "abc", id: 7 }; const currentNodef = { analyser: "abc", id: 6 }; const getResult = (curr) => { const tgt = allNodes.find( ({ analyser, id }) => curr.id === id ); if (tgt) { if ( tgt.analyser && tgt.analyser === curr.analyser ) { return JSON.stringify(tgt); } else { return "print nothing"; } } else { return "not found" }; }; btn.textContent = 'Search analyser id=7'; btn.addEventListener('click', () => { rd.innerText = getResult(currentNodee); }); btn2.textContent = 'Search analyser id=6'; btn2.addEventListener('click', () => { rd.innerText = getResult(currentNodef); }); <div> Search result: <div id="rd">empty</div> <button id="myBtn" /> <button id="myBtn2" /> </div> La impresión en una sola línea se puede hacer usando JSON.stringify() como se muestra en el fragmento de código anterior.