Actualmente tengo un objeto que contiene una clave con múltiples valores.
También tengo una matriz que contiene una verificación de clave simple, es decir ["random", "three"] .
Quiero devolver mainData pero solo con el objeto y los datos de lo que está en la matriz, es decir ["random", "three"]
Código actual:
const mainData = { random: { name: "Random Entity", date: "05/04/2022", startTime: "19:00", finishTime: "00:00", }, one: { name: "One Entity", date: "16/04/2022", startTime: "16:00", finishTime: "20:00", }, three: { name: "Three Entity", date: "19/04/2022", startTime: "10:00", finishTime: "11:00", }, }; export default mainData;Salida deseada
const mainData = { random: { name: "Random Entity", date: "05/04/2022", startTime: "19:00", finishTime: "00:00", }, three: { name: "Three Entity", date: "19/04/2022", startTime: "10:00", finishTime: "11:00", }, };Intentar:
let filterKey = 'random'; const result = Object.entries(mainData).filter(([k, v]) => k== filterKey);Esto funciona solo como una búsqueda única, no como una búsqueda de matriz.
Asigne la matriz a una matriz de entradas ( [[key,val],[key,val],...] ) y pásela a través de Object.fromEntries()
const mainData = {"random":{"name":"Random Entity","date":"05/04/2022","startTime":"19:00","finishTime":"00:00"},"one":{"name":"One Entity","date":"16/04/2022","startTime":"16:00","finishTime":"20:00"},"three":{"name":"Three Entity","date":"19/04/2022","startTime":"10:00","finishTime":"11:00"}} const filters = ["random", "nope", "three"] const result = Object.fromEntries( filters .filter( key => key in mainData // only include keys that exist in mainData ) .map( key => [ key, mainData[key] ] ) ) console.log(result) .as-console-wrapper { max-height: 100% !important; }Si conoce las claves que le gustaría excluir, puede usar este enfoque:
const mainData = { random: { name: "Random Entity", date: "05/04/2022", startTime: "19:00", finishTime: "00:00", }, one: { name: "One Entity", date: "16/04/2022", startTime: "16:00", finishTime: "20:00", }, three: { name: "Three Entity", date: "19/04/2022", startTime: "10:00", finishTime: "11:00" } }; const {one, ...desiredData} = mainData; console.log( desiredData ); Alternativamente, si tiene las claves de filtro, puede map() las claves a [key, value] , desde [key,mainData[key]] , luego crear un objeto a partir de estos pares key-value usando Object.fromEntries() como en la demostración a continuación:
const mainData = { random: { name: "Random Entity", date: "05/04/2022", startTime: "19:00", finishTime: "00:00", }, one: { name: "One Entity", date: "16/04/2022", startTime: "16:00", finishTime: "20:00", }, three: { name: "Three Entity", date: "19/04/2022", startTime: "10:00", finishTime: "11:00" } }; const desiredData = Object.fromEntries( ["random", "three"].map(f => [f, mainData[f]]) ); console.log( desiredData );