Estoy obteniendo los datos de la fecha y estableciendo la fecha en el objeto JSON

let lastSeven = moment().subtract(7, 'd').toDate();
var dat =  moment(lastSeven).format('D');

dat = dat.replace(/^"(.*)"$/, '$1');

Tengo que obtener los datos como este

{
  'year': 2018,
  'month': 9,
  'day': 14
};

Pero después del reemplazo también estoy obteniendo

{
  'year': "2018",
  'month': "9",
  'day': "14"
};

¿Cómo puedo eliminar las comillas dobles de los valores?

1
madpop techie 14 sep. 2018 a las 11:43

3 respuestas

La mejor respuesta

Bien, sin las comillas dobles, serían números, así que convierta todo el valor en número.

let obj = {
  'year': 2018,
  'month': 9,
  'day': 14
};

for (let property in obj) {
  if (obj.hasOwnProperty(property)) obj[property] = +obj[property];
}
console.log(obj);
1
Chris Li 14 sep. 2018 a las 08:46

Puede intentar de esta manera usando Array.prototype.map()

var myObject = {
  'year': "2018",
  'month': "9",
  'day': "14"
};
var result = {};
Object.keys(myObject).map(function(key, index) {
  result[key] = +myObject[key];
});
console.log(result)
1
Always Sunny 14 sep. 2018 a las 09:00

Necesitas convertir cadena a número.

for(var key in data){
    data[key] = Number(data[key]);
}
2
Vitalii 14 sep. 2018 a las 08:46