转换对象数组中的值

时间:2017-05-16 19:02:01

标签: javascript loops object ecmascript-6

我有一系列具有String值的对象,我想将其转换为Date,但我收到以下错误:

  

Uncaught SyntaxError:意外的令牌:

我应该如何正确地执行此转换并返回相同的对象结构?

array = [
    {
        end: "2017-05-18T09:00:00.000Z",
        start: "2017-05-18T06:00:00.000Z"
    },
    {
        end: "2017-05-19T07:00:00.000Z",
        start: "2017-05-19T06:00:00.000Z"
    },
    {
        end: "2017-05-20T08:00:00.000Z",
        start: "2017-05-20T07:00:00.000Z"
    }
]

result = array.map((element) => {
  {
    end: new Date(element.end),
    start: new Date(element.start),
  }
})

4 个答案:

答案 0 :(得分:2)

你要么:

result = array.map(element => ({
 end: new Date(element.end),
start: new Date(element.start),
}));

OR:

result = array.map(element => {
  return {
    end: new Date(element.end),
    start: new Date(element.start),
  };
})

可以查看ECMAScript6 arrow function that returns an object

答案 1 :(得分:1)

您收到的错误是因为javascript认为{ end: new Date(element.end), start: new Date(element.start), }是一个代码块。 将其更改为

result = array.map((element) => {
  return {
    end: new Date(element.end),
    start: new Date(element.start),
  }
})
console.log(result)

你错过了回归。

答案 2 :(得分:1)

您可以将对象括在括号广告返回值中。

let array = [{ end: "2017-05-18T09:00:00.000Z", start: "2017-05-18T06:00:00.000Z" }, { end: "2017-05-19T07:00:00.000Z", start: "2017-05-19T06:00:00.000Z" }, { end: "2017-05-20T08:00:00.000Z", start: "2017-05-20T07:00:00.000Z" }],
    result = array.map(element => ({
        end: new Date(element.end),
        start: new Date(element.start),
    }));

console.log(result);

答案 3 :(得分:0)

要使用箭头功能返回对象,您需要额外的括号,如下所示:

results = array.map(el => ({ end: new Date(el.end), start: new Date(el.start) }) )