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

117
Views
¿Cómo puedo hacer coincidir los elementos de mi matriz con los elementos de mi objeto?

Tome la siguiente estructura de datos

 report = { fraud_ids: [2, 3, 4, 15], } fraudTypes: { ACH: { fraud_category: "fraud", fraud_subcategory: "a", fraud_type_id: "4", }, 'Account takeover': { fraud_category: "misc", fraud_subcategory: "a", fraud_type_id: "2", }, 'Advance fee': { fraud_category: "fraud", fraud_subcategory: "b", fraud_type_id: "8", }, 'Against Financial Institution Customer(s)': { fraud_category: "cyber", fraud_subcategory: "b", fraud_type_id: "15", }, 'Against Financial Institution(s)': { fraud_category: "cyber", fraud_subcategory: "a", fraud_type_id: "78", }, 'Alters or cancels transaction to avoid BSA recordkeeping requirement': { fraud_category: "structuring", fraud_subcategory: "a", fraud_type_id: "3", }, }

Quiero hacer coincidir el objeto de tipo de fraude con el número correcto en la matriz por fraude_tipo_id. Y cuando encuentro una coincidencia, solo quiero devolver la clave del objeto.

Entonces, usando el ejemplo anterior, devolvería ['Account takeover', 'Alters or cancels transaction to avoid BSA recordkeeping requirement', 'ACH', Against Financial Institution Customer(s)']

Escribí la siguiente lógica y, para mi sorpresa, obtuve una matriz de cuatro elementos que devuelven indefinidos.

 const x = report.fraud_ids.map(id => { Object.keys(fraudTypes).map(fraudDescription => { if (parseInt(fraudTypes[fraudDescription].fraud_type_id, 10) === id) { return true; } }); });

Esperaba que esto devolviera los cuatro objetos coincidentes y luego sé que tengo que escribir lógica adicional solo para devolver las claves. ¿Qué estoy haciendo mal?

Consulte el código Sandbox .

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

No está devolviendo nada desde la primera devolución de llamada, ni .map es el método interno correcto; en su lugar, use .find para encontrar la clave con la ID coincidente.

 report={fraud_ids:[2,3,4,15],fraudTypes:{ACH:{fraud_category:"fraud",fraud_subcategory:"a",fraud_type_id:"4"},"Account takeover":{fraud_category:"misc",fraud_subcategory:"a",fraud_type_id:"2"},"Advance fee":{fraud_category:"fraud",fraud_subcategory:"b",fraud_type_id:"8"},"Against Financial Institution Customer(s)":{fraud_category:"cyber",fraud_subcategory:"b",fraud_type_id:"15"},"Against Financial Institution(s)":{fraud_category:"cyber",fraud_subcategory:"a",fraud_type_id:"78"},"Alters or cancels transaction to avoid BSA recordkeeping requirement":{fraud_category:"structuring",fraud_subcategory:"a",fraud_type_id:"3"}}}; const x = report.fraud_ids.map(id => ( Object.keys(report.fraudTypes).find(fraudDescription => Number(report.fraudTypes[fraudDescription].fraud_type_id) === id) )); console.log(x);

about 4 years ago · Juan Pablo Isaza Report

0

No sé si esto es lo que quieres, pero ahí va.

 const selectedFrauds = report.fraud_ids.map((id, index) => { return( Object.values(fraudTypes).map((fraud, idx) => { return id === +fraud.fraud_type_id ? fraud : ""; }) ) }) const cleanSelectedFrauds = selectedFrauds.map((el) => { return el.filter((innerEl) => { if(innerEl) { return innerEl } }) }); console.log(cleanSelectedFrauds)

Esto devolverá la siguiente matriz:

 [ [ { fraud_category: 'misc', fraud_subcategory: 'a', fraud_type_id: '2' } ], [ { fraud_category: 'structuring', fraud_subcategory: 'a', fraud_type_id: '3' } ], [ { fraud_category: 'fraud', fraud_subcategory: 'a', fraud_type_id: '4' } ], [ { fraud_category: 'cyber', fraud_subcategory: 'b', fraud_type_id: '15' } ] ]
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!