Verifique el tipo de objeto del encabezado, verifique si el tipo == fecha, entonces para esa propiedad solo necesita agregar el formato de fecha. encuentre el tipo en el objeto de los encabezados en caso de que el tipo de objeto del encabezado sea la fecha, luego los resultados finales devueltos serían la fecha del formato
objeto de encabezados:
let headers = [ { key_name: 'trans_id', header_value: 'Transaction ID' ,type:'number' }, { key_name: 'start_date', header_value: 'Start Date' ,type:'date' } ]resultados Objeto:
let results = [ { trans_id: '2019124453159', start_date:'2021-12-27T00:00:00.000Z', code: '$' }, { trans_id: '2019120534555', start_date:'2021-12-27T00:00:00.000Z', code: 'INR' } ]Comprueba el tipo de encabezado y da formato a la fecha. resultados esperados es:
let results = [ { Transaction ID: '2019124453159', Start Date : '2021-12-27' }, { Transaction ID: '2019120534555', Start Date : '2021-12-27' } ]Intenté con el siguiente script que regresa sin formato de fecha:
let headers = [{ key_name: 'trans_id', header_value: 'Transaction ID', type: 'number' }, { key_name: 'start_date', header_value: 'Start Date', type: 'date' } ] let results = [{ trans_id: '2019124453159', start_date: '2021-12-27T00:00:00.000Z', code: '$' }, { trans_id: '2019120534555', start_date: '2021-12-27T00:00:00.000Z', code: 'INR' } ] const mappedHeaders = results.map((r) => { const keys = Object.keys(r); let newObj = {}; for (const key of keys) { const newHeader = headers.find((h) => h.key_name === key); if (newHeader) newObj[newHeader.header_value] = r[key]; } return newObj; }); console.log(mappedHeaders) <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>No has manejado el tipo de la cabecera. Verifique si el tipo del encabezado es una fecha, si luego lo formatea usando el moment y úselo como el valor, o simplemente use el valor tal como está.
violín de trabajo
let headers = [ {key_name: 'trans_id',header_value: 'Transaction ID',type: 'number'}, {key_name: 'start_date',header_value: 'Start Date',type: 'date'} ] let results = [ {trans_id: '2019124453159',start_date: '2021-12-27T00:00:00.000Z',code: '$'}, {trans_id: '2019120534555',start_date: '2021-12-27T00:00:00.000Z',code: 'INR'} ] const dateFormat = "YYYY-MM-DD"; const mappedHeaders = results.map((r) => { const keys = Object.keys(r); let newObj = {}; for (const key of keys) { const newHeader = headers.find((h) => h.key_name === key); if (newHeader) newObj[newHeader.header_value] = newHeader.type === 'date' ? moment(new Date(r[key])).format(dateFormat) : r[key]; } return newObj; }); console.log(mappedHeaders) <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>Agregué un si: ¿es eso lo que necesitabas?
let headers = [ { key_name: 'trans_id', header_value: 'Transaction ID', type: 'number' }, { key_name: 'start_date', header_value: 'Start Date', type: 'date' } ] let results = [{ trans_id: '2019124453159', start_date: '2021-12-27T00:00:00.000Z', code: '$' }, { trans_id: '2019120534555', start_date: '2021-12-27T00:00:00.000Z', code: 'INR' } ]; const mappedHeaders = results.map((r) => { const keys = Object.keys(r); return keys.reduce((acc,key) => { const newHeader = headers.find((h) => h.key_name === key); if (newHeader) { let val = r[key]; if (newHeader.type === 'number') val = parseInt(r[key]); else if (newHeader.type === 'date') val = val.split("T")[0]; acc[newHeader.header_value] = val } return acc; },{}) }); console.log(mappedHeaders) <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>