我想更改数组对象的值,但似乎值没有保存。我读了一些关于不可变对象的信息,但一定有某种方法可以做到这一点,我将很高兴为您提供帮助,谢谢。
app.get('/api/reservations',function(req,res) {
Rezervari.getReservations(function(err,reserv){
if(err){
throw err;
}
let datas = reserv
for( var i=0;i < reserv.length ;i++){
let changetime = dateformat(datas[i].data).format("MM-DD-YYYY")
datas[i].data = changetime;
datas[i].data = dateformat(datas[i].data).format("MM-DD-YYYY")
console.log(datas[i].data) // 2018-09-17T21:00:00.000Z
console.log(changetime) // 09-18-2018
}
res.json(datas);
});
});
编辑:对象是reserv
或datas
(相同数组)。我想将data
的字段reserv
从ISO格式更改为MM-DD-YYYY
格式.var changeTime
中的值已更改,但data
的数组中的值未更改。
答案 0 :(得分:1)
如果数组中的对象为proxies,则可能会发生这种情况。这是一个如何实现类似内容的示例:
const handler = {
get: function(obj, prop) {
if (prop === 'data') {
return this._data.toISOString();
}
},
set: function(obj, prop, value) {
if (prop === 'data') {
this._data = new Date(value);
}
}
};
let obj = new Proxy({}, handler);
obj.data = '2018-09-17';
console.log(obj.data); // returns '2018-09-17T00:00:00.000Z'
如果是这种情况,并且想要避免代理行为,则可以将原始数组映射到一个新数组:
res.json(datas.map(item => {
return {
data: dateformat(item.data).format("MM-DD-YYYY")
/* extract any other properties you're interested in from the original objects */
};
}));
答案 1 :(得分:0)
您可以尝试克隆Javascript对象,填充新数组并返回它。这是一个示例:
let datas = [];
for (let i = 0; i < reserv.length ; i++){
const clone = Object.assign({}, reserv[i]);
clone.data = dateformat(reserv[i].data).format("MM-DD-YYYY");
datas.push(clone);
}
res.json(datas);