Tengo un modelo que obtiene algunos datos y filtros. Cuando se inicie la aplicación, quiero que todos los filtros sean iguales a true . He establecido un valor predeterminado, pero sigo recibiendo el siguiente error.
const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true }) => { const getData = () => data.filter(placeFilter).filter(startDateFilter).filter(endDateFilter) } TypeError: Cannot read properties of undefined (reading 'placeFilter') at model (model.js:1) at init (index.js:15)Su parámetro podría ser nombrado para acceder al valor predeterminado
const model = (data, predictions, filter = { placeFilter: true, startDateFilter: true, endDateFilter: true }) => { const getData = () => data.filter(filter.placeFilter).filter(filter.startDateFilter).filter(filter.endDateFilter) }const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true }) => { const getData = () => data.filter(placeFilter).filter(startDateFilter).filter(endDateFilter) } No puede llamar a la función del model anterior pasando dos argumentos como model([], []) ya que JavaScript intentará desestructurar el tercer argumento que no está undefined .
Puedes hacer esto en su lugar:
const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true } = {}) => { console.log(placeFilter, startDateFilter, endDateFilter) } model([], []) model([], [], { placeFilter: false }) Por cierto, suponiendo data son una matriz y está tratando de usar Array.prototype.filter , se debe llamar al filter con una función de devolución de llamada que devuelve un booleano pero está pasando directamente booleanos a todos los filtros.
const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true } = {}) => { const getData = () => data.filter(placeFilter).filter(startDateFilter).filter(endDateFilter) }