Tengo datos de matriz como estos.
const dataSample = [ { "staff": 1000, "name": "Apple", "logo_url": "biten apple", "down":"yes" }, { "staff": 500, "name": "Microsoft", "logo": "squares", "down":"no" }, { "staff": 4000, "name": "Google", "logo_url": "letter", "down":"no" }, { "staff": 2000, "name": "Coca Cola", "logo": "letters", "down":"yes" }, ];tengo otra matriz
const filterArr = [“name”, “down”];Quiero una salida como estas?
[ { "name": "Apple", "down": "yes" }, { "name": "Microsoft", "down": "no" }, { "name": "Google", "down": "no" }, { "name": "Coca Cola", "down": "yes" }, ];dataSample en su caso.filterArr ). const dataSample = [ { staff: 1000, name: "Apple", logo_url: "biten apple", down: "yes" }, { staff: 500, name: "Microsoft", logo: "squares", down: "no" }, { staff: 4000, name: "Google", logo_url: "letter", down: "no" }, { staff: 2000, name: "Coca Cola", logo: "letters", down: "yes" }, ], filterArr = ["name", "down"], output = dataSample.map((o) => Object.fromEntries( Object.entries(o).filter(([k, v]) => filterArr.includes(k)) ) ); console.log(output); Si está tratando con matrices grandes, debería considerar convertir la matriz de búsqueda ( filterArr ) en un Set .
const dataSample = [ { staff: 1000, name: "Apple", logo_url: "biten apple", down: "yes" }, { staff: 500, name: "Microsoft", logo: "squares", down: "no" }, { staff: 4000, name: "Google", logo_url: "letter", down: "no" }, { staff: 2000, name: "Coca Cola", logo: "letters", down: "yes" }, ], filterArr = ["name", "down"], filterSet = new Set(filterArr), output = dataSample.map((o) => Object.fromEntries(Object.entries(o).filter(([k, v]) => filterSet.has(k))) ); console.log(output);Esto se puede hacer usando Array.map() combinado con Array.reduce() de la siguiente manera:
const result = dataSample.map(o => filterArr.reduce((acc, curr) => { acc[curr] = o[curr]; return acc; }, {}));Eche un vistazo al código ejecutable a continuación y vea cómo funciona.
const dataSample = [{ "staff": 1000, "name": "Apple", "logo_url": "biten apple", "down": "yes" }, { "staff": 500, "name": "Microsoft", "logo": "squares", "down": "no" }, { "staff": 4000, "name": "Google", "logo_url": "letter", "down": "no" }, { "staff": 2000, "name": "Coca Cola", "logo": "letters", "down": "yes" }, ]; const filterArr = ["name", "down"]; const result = dataSample.map(o => filterArr.reduce((acc, curr) => { acc[curr] = o[curr]; return acc; }, {})); console.log(result)prueba esto:
const dataSample = [ { staff: 1000, name: "Apple", logo_url: "biten apple", down: "yes" }, { staff: 500, name: "Microsoft", logo: "squares", down: "no" }, { staff: 4000, name: "Google", logo_url: "letter", down: "no" }, { staff: 2000, name: "Coca Cola", logo: "letters", down: "yes" }, ]; const filterArr = ["name", "down"]; let output = dataSample.map((cv) => Object.assign( ...filterArr.map(fa => ({[fa]: cv[fa]})))); console.log(output);