Tengo dificultades para comparar las propiedades de dos objetos/matrices
primer objeto
{ "62ac1c8d5b25ad28781a586d": { "selectedOption": 0 }, "62ac1c8d5b25ad28781a586e": { "selectedOption": 0 }}Segunda matriz
[ { "question_id": "62ac1c8d5b25ad28781a586d", "selected_ans": 0 }, { "question_id": "62ac1c8d5b25ad28781a586e", "selected_ans": 0 }, { "question_id": "62ac1c8d5b25ad28781a586f", "ans": 0 }]
Sugiera amablemente cómo comparar la propiedad inicial del primer objeto (ejemplo: 62ac1c8d5b25ad28781a586d) con la propiedad question_id de la segunda matriz y devolver solo el question_id coincidente
Simplemente puede usar el método de búsqueda definido en el prototipo de matriz.
function compare(id, arr){ return arr.find(arrObj => arrObj.question_id === id); }Para encontrar todas las identificaciones coincidentes del objeto presente en la matriz, puede recorrer las claves y llamar a la función de comparación para esas claves de esta manera.
function compare(id, arr) { return arr.find(arrObj => arrObj.question_id === id); } const obj = { "62ac1c8d5b25ad28781a586d": { "selectedOption": 0 }, "62ac1c8d5b25ad28781a586e": { "selectedOption": 0 } } const arr = [ { "question_id": "62ac1c8d5b25ad28781a586d", "selected_ans": 0 }, { "question_id": "62ac1c8d5b25ad28781a586e", "selected_ans": 0 }, { "question_id": "62ac1c8d5b25ad28781a586f", "ans": 0 } ] const matchingObjects = []; for (let key in obj) { const matchObject = compare(key, arr); if (matchObject) { matchingObjects.push(matchObject); } } console.log(matchingObjects);Puede filter elementos de secondArr usando Set como:
const obj = { '62ac1c8d5b25ad28781a586d': { selectedOption: 0, }, '62ac1c8d5b25ad28781a586e': { selectedOption: 0, }, }; const secondArr = [ { question_id: '62ac1c8d5b25ad28781a586d', selected_ans: 0, }, { question_id: '62ac1c8d5b25ad28781a586e', selected_ans: 0, }, { question_id: '62ac1c8d5b25ad28781a586f', ans: 0, }, ]; const keys = new Set(Object.keys(obj)); const result = secondArr.filter((o) => keys.has(o.question_id)); console.log(result);