Tengo una lista de ápices que devuelve un resultado de SOQL.
List<Account> List1=[select Name, Phone from Account where Name=:actName];Este método se llama desde un archivo JS de mi componente web Lightning y el resultado se guarda en una matriz.
@wire(getAccounts,{actName:'$accountName'}) retrieveAccouts({error,data}){ if(data){ this.accountList = data; } else if(error){ } }Tengo una fila de esta cuenta seleccionada en la interfaz de usuario y el nombre de la cuenta seleccionada. Quiero buscar otros detalles de esa cuenta en esta matriz (accountList). ¿Cómo logro esto?
Traté de usar el método find() en la matriz pero no funcionó. ¿Qué más se puede usar? ¿Qué condición se debe usar si uso filter() en esta matriz?
El filter toma una función que debe devolver verdadero (veraz) o falso (falso), pero las condiciones son las que se necesitan.
Si la condición fuera que necesitáramos filtrar los nombres de cuenta que contienen 'Bob', podríamos:
this.accountList = [{Name: 'Alice'}, {Name: 'Bob1'}, {Name: 'Bob2'}] const bobs = this.accountList.filter(acc => acc.Name.includes('Bob')) console.log(bobs) // [{ Name: "Bob1" }, { Name: "Bob2" }] Un problema que me vino a la mente es la distinción entre mayúsculas y minúsculas y que los datos de SOQL siempre son como el Nombre de la API de campo/Nombre del desarrollador. Arriba, uso Name como Account.Name, pero otros campos como AccountNumber pueden ser camel case y los campos personalizados necesitan __c etc. ( Custom_Field__c ). Puede activar la depuración en Salesforce o puede consolar los datos para ver los nombres de campo exactos mediante la cadena, el análisis y luego cerrar sesión como:
console.log( JSON.parse( JSON.stringify( { list: this.accountList } )))
find es muy similar pero en lugar de devolver un Array, devuelve el primer Objeto que es verdadero/verdadero:
this.accountList = [{Name: 'Alice'}, {Name: 'Bob1'}, {Name: 'Bob2'}] const bob = this.accountList.find(acc => acc.Name.includes('Bob')) console.log(bob) // { Name: "Bob1" }