【问题标题】:Update an object and combine properties together in javascript?在javascript中更新对象并将属性组合在一起?
【发布时间】:2018-05-02 09:40:45
【问题描述】:

我正在尝试转换以下对象:

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"

我现在错过了什么?

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

【问题讨论】:

  • 向我们展示您的尝试。这些步骤并不复杂,这里的目的是让您展示您的尝试,当它没有达到预期效果时,人们会帮助您修复您的代码
  • 您的浏览器限制是什么?你能在 ES6 中做到这一点吗?还是你需要让它在 ES5 中工作?您是否也只是将对象的一种格式转换为另一种格式?或者原始对象可以有任意数量的属性,你怎么知道要复制到另一个对象?
  • 您(隐含地)选择了@Intervalia 的答案。因此,将他的答案标记为正确答案并提出另一个问题。公平点!

标签: javascript object javascript-objects


【解决方案1】:

如果你可以使用 ES6,试试这个:

let obj = {startDate: '2015-08-03', startTime: '12:00AM'}
obj = {startDate: `${obj.startDate} ${obj.startTime}`}

【讨论】:

  • 感谢您的回答。我集成了我的更新。
【解决方案2】:

您可能需要经常这样做。如果是这样,我would first add 一个新的类属性方法;众所周知的方法pop 到所有Object-instances(通过他们的构造函数的原型)。先做

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'}

【讨论】:

  • 谢谢你的回答......很高兴知道我可以这样做。但就我正在做的事情而言,只有一个用例。
【解决方案3】:

你可以把它放在一个新的变量中

let newDate = obj.startDate + ' ' + obj.startTime

然后像这样把它放在你的对象上。

let obj.startDate = newDate

然后你可以删除 startTime 属性:

delete obj.startTime;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2019-11-14
    • 2016-12-19
    • 2015-12-05
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多