Revisé varias publicaciones similares sobre el filtrado de la matriz en función de las claves e intenté implementarlo también, pero no pude obtener la respuesta correcta. Aquí está mi código -
const data = [{ dnum: "061806", enddate: "2022-05-31", fnum: 0.7, role: "MP", startdate: "2022-01-13", }, { dnum: "061806", enddate: "2022-05-31", fnum: 0.786, role: "MP", startdate: "2022-01-13", }] function copyObjectProps(source, keys) { let newObject = {} keys.forEach(function(key) { newObject[key] = source[key] }) return newObject } let filteredObject = copyObjectProps(data, ['dnum', 'role', 'fnum']) console.log(filteredObject)Estoy obteniendo el siguiente resultado:
{ dnum: undefined, role: undefined, fnum: undefined }Pero espero que sea algo como esto:
[{ dnum: "061806", fnum: 0.7, role: "MP", }, { dnum: "061806", fnum: 0.786, role: "MP", }]¿Alguien podría decirme qué estoy haciendo mal exactamente?
ver este artículo
const data = [{ dnum: "061806", enddate: "2022-05-31", fnum: 0.7, role: "MP", startdate: "2022-01-13", },{ dnum: "061806", enddate: "2022-05-31", fnum: 0.786, role: "MP", startdate: "2022-01-13", }] function selectProps(props){ return function(obj){ const newObj = {}; props.forEach(name =>{ newObj[name] = obj[name]; }); return newObj; } } let filteredObject1 = data.map(selectProps(['dnum', 'role','fnum'])) let filteredObject2 = data.map(selectProps(['dnum','fnum'])) console.log(filteredObject1) console.log(filteredObject2)edite si quiere cambiar los nombres de las teclas, hice algo como esto
const data = [{ dnum: "061806", enddate: "2022-05-31", fnum: 0.7, role: "MP", startdate: "2022-01-13", },{ dnum: "061806", enddate: "2022-05-31", fnum: 0.786, role: "MP", startdate: "2022-01-13", }] function selectProps(props){ return function(obj){ const newObj = {}; props.forEach(el =>{ newObj[el[1]] = obj[el[0]]; }); return newObj; } } let filteredObject = data.map(selectProps([['dnum','DNUM'],['fnum','fnum'],['role','Role Name']])) //if dont want to change key name send like this ['dnum','dnum'] console.log(filteredObject)Casi lo has clavado. Esto es lo que necesita cambiar para que funcione:
// modify this line let filteredObject = copyObjectProps(data, ['dnum', 'role', 'fnum']) // to this const filteredObject = data.map(item => { return copyObjectProps(item, ['dnum', 'role', 'fnum'])) }Esto es lo que sucedió:
map te está dando la matriz, tu método te está dando el objeto correcto. ¡Buena suerte! 🙂