Tengo dos matrices, arr1 tiene el campo y necesito tomar solo el valor del campo. El valor del campo debe verificarse con arr2 y, si coincide con el nombre de la clave, debe crearse como el resultado a continuación:
let arr1 = [{ field: "name", value: "some1", value1: "some2" },{ field: "job", value: "some1", value1: "some2" },{ field: "from", value: "some1", value1: "some3" } ]; let arr2 = [{ name: "John", job: "engineer", address: "abc", from: "boston", gender: "male" },{ name: "Steph", job: "worker", address: "uhuh", from: "uk", gender: "male" },{ name: "dor", job: "farmer", address: "gdgs", from: "us", gender: "female" } ];Salida necesaria:
[{ name: "John", job: "engineer", from: "boston" },{ name: "Steph", job: "worker", from: "uk" },{ name: "Ram", job: "farmer", from: "us" } ];Intenté hacer esto, pero solo obtengo los últimos valores en arr2.
for(let index = 0; index < arr2.length; index++){ for(let newi = 0; newi < arr1.length; newi++){ newObj = arr1[newi].field; final[newObj] = arr2[index][newObj] last.push(final[newObj]) } console.log(last) }Hazlo así, usando Array.map y Array.reduce
const arr1 = [{ field: "name", value: "some1", value1: "some2"},{ field: "job", value: "some1", value1: "some2"},{ field: "from", value: "some1", value1: "some3"}]; const arr2 = [{ name: "John", job: "engineer", address: "abc", from: "boston", gender: "male"},{ name: "Steph", job: "worker", address: "uhuh", from: "uk", gender: "male"},{ name: "dor", job: "farmer", address: "gdgs", from: "us", gender: "female"}]; const result = arr2.map(item => arr1.reduce((acc, {field}) => { acc[field] = item[field]; return acc; }, {})); console.log(result);Usando map y Object.assign
const arr1 = [{ field: "name", value: "some1", value1: "some2"},{ field: "job", value: "some1", value1: "some2"},{ field: "from", value: "some1", value1: "some3"}]; const arr2 = [{ name: "John", job: "engineer", address: "abc", from: "boston", gender: "male"},{ name: "Steph", job: "worker", address: "uhuh", from: "uk", gender: "male"},{ name: "dor", job: "farmer", address: "gdgs", from: "us", gender: "female"}]; const fields = arr1.map(({ field }) => field); const output = arr2.map((item) => Object.assign({}, ...fields.map((field) => ({ [field]: item[field] }))) ); console.log(output)