我正在尝试转换下面的对象:
let obj = {startDate: '2015-08-03', startTime: '12:00AM'}
到
let obj = {startDate: '2015-08-03 12:00AM'}
在javascript中执行此操作的最佳方法是什么?
更新
这就是我目前的
export default object => {
let newObj = {};
Object.keys(object).forEach(item => {
if (object[item] === '') {
delete newObj[item];
} else if (moment.isMoment(object[item])) {
newObj[item] = object[item].format('YYYY-DD-MM');
} else if (item === 'startTime') {
newObj['startDate'] = `${newObj['startDate']} ${object['startTime']}`;
} else {
newObj[item] = object[item];
}
});
return newObj; };
但问题是当我首先选择时间字段然后将其呈现为
的日期startDate: "undefined 3:00AM"
我现在缺少什么?
感谢目前为止提供的所有帮助。
答案 0 :(得分:2)
您可能需要经常这样做。如果是这样,我would first add一个新的类似属性的方法;众所周知的方法pop
到所有Object
- 实例(通过他们的构造函数的原型)。先做
Object.defineProperty(Object.prototype, 'pop',{
writable: false
, configurable: false
, enumerable: false
, value: function (name) {
var value = this[name];
delete this[name];
return value;
}
});
最后,
obj.startDate += ' ' + obj.pop('startTime')
使obj
成为
{startDate: '2015-08-03 12:00AM'}
答案 1 :(得分:2)
如果你可以使用ES6试试这个:
let obj = {startDate: '2015-08-03', startTime: '12:00AM'}
obj = {startDate: `${obj.startDate} ${obj.startTime}`}
答案 2 :(得分:1)
您可以将其置于新变量
中let newDate = obj.startDate + ' ' + obj.startTime
然后把它放在你的物体上。
let obj.startDate = newDate
然后您可以使用以下命令删除startTime属性:
delete obj.startTime;