更新对象并在javascript中将属性组合在一起?

时间:2017-11-18 20:07:04

标签: javascript object javascript-objects

我正在尝试转换下面的对象:

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"

我现在缺少什么?

感谢目前为止提供的所有帮助。

3 个答案:

答案 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;