Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

153
Views
¿Es este el JavaScript más eficiente para comparar dos matrices de objetos y modificar propiedades?

Tengo un método debajo que está en un componente Ecma 6 (Salesforce Lightning Web Components si alguien tiene curiosidad). Lo he agregado aquí porque esto es más JavaScript que una pregunta de LWC. ¿Es esta la mejor manera de realizar la tarea?

Tengo dos matrices, ambas son de objetos: quiero comparar las matrices y crear una nueva matriz de objetos que tenga una nueva propiedad required: true o required: false . ¿Es esta la manera más eficiente de hacer esto?

 const RequiredFields = [ { fieldApiName: 'FirstName', value: 'Test' } , { fieldApiName: 'LastName', value: 'LastNameTest' } ] const AllFields = [ { fieldApiName: 'FirstName', value: 'Test' } , { fieldApiName: 'LastName', value: 'LastNameTest' } , { fieldApiName: 'Suffix', value: '' } ] addRequiredFields(RequiredFields, Allfields) { RequiredFields.forEach(field => { field.required = true; }); Allfields.forEach(field => { var hasVal = Object.values(field).includes(true); if (hasVal) { console.log(field.fieldApiName + ' = TRUE'); } else { field.required = false; } console.log(field); }); return Allfields; } console.log ( addRequiredFields(RequiredFields, Allfields) )

 output = [ { fieldApiName: FirstName, value: 'Test' , required: true} , { fieldApiName: LastName, value: 'LastNameTest' , required: true} , { fieldApiName: Suffix, value: '', required: false } ]
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

haz eso, usa Array.some()

 const RequiredFields = [ { fieldApiName: 'FirstName', value: 'Test' } , { fieldApiName: 'LastName', value: 'LastNameTest' } ] , Allfields = [ { fieldApiName: 'FirstName', value: 'Test' } , { fieldApiName: 'LastName', value: 'LastNameTest' } , { fieldApiName: 'Suffix', value: '' } ]; function addRequiredFields( ReqF , data) { data.forEach( row => row.required = ReqF.some( x => x.fieldApiName === row.fieldApiName ) ) } addRequiredFields( RequiredFields, Allfields ) console.log ( Allfields )
 .as-console-wrapper { max-height: 100% !important; top: 0 }

about 4 years ago · Juan Pablo Isaza Report

0

Algunos comentarios:

  • La línea en su código var hasVal = Object.values(field).includes(true); podría causar errores porque devolverá verdadero si a alguna tecla se le asigna el valor true . Solo queremos verificar el valor asignado a la clave required .
  • En lugar de mutar la matriz AllFields , intente .map() para devolver una nueva matriz. La programación inmutable tiene una simplicidad que generalmente hace que sea más fácil de seguir.

Aquí hay una solución más simple usando .map() y .some()

 const RequiredFields = [ { fieldApiName: 'FirstName', value: 'Test'}, { fieldApiName: 'LastName', value: 'LastNameTest' } ]; const AllFields = [ { fieldApiName: 'FirstName', value: 'Test'}, { fieldApiName: 'LastName', value: 'LastNameTest' }, { fieldApiName: 'Suffix', value: ''} ]; const result = AllFields.map(field => ({ ...field, required: RequiredFields.some( ({fieldApiName}) => fieldApiName === field.fieldApiName ) })); console.log('result', result);

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!