如何使用javascript更新数组中对象的值

问题描述 投票:0回答:2

我有这样的数组

myArray=[{
  id:1,
  date:2019-03-17,
  title:'name1'
},
{
  id:2,
  date:2019-04-17,
  title:'name2'
},
{
  id:3,
  date:2019-05-17,
  title:'name3'
},
]

如何更新它并获得如下所示的新数组

newArray=[
  {
    id:1,
    date:moment(2019-03-17).format('L'),
    title:'name1'
  },
  {
    id:2,
    date:moment(2019-04-17).format('L'),
    title:'name2'
  },
  {
    id:3,
    date:moment(2019-05-17).format('L'),
    title:'name3'
  },

]

以上只是我的示例。真正的问题是我从Postgres获取了日期,而这些日期没有时区。所以我需要用一下时间来格式化我从数据库中得到的所有日期谢谢

javascript
2个回答
0
投票

您可以使用foor循环并按如下所示编辑对象,

for(var i = 0; i < myArray.length; i++) {
    myArray[i].date = "moment(" + myArray[i].date + ").format('L')";
}

2
投票

如果使用nodepg,则可以这样做:

const pg = require("pg");


const PG_TIMESTAMP_OID = 1114;
const PG_TIMESTAMPTZ_OID = 1184;
const PG_DATESTAMP = 1082;

const parseDate = (date) => (date === null ? null : moment(date).format());

pg.types.setTypeParser(PG_TIMESTAMP_OID, parseDate);
pg.types.setTypeParser(PG_TIMESTAMPTZ_OID, parseDate);
pg.types.setTypeParser(PG_DATESTAMP, parseDate);

这样,在查询postgres时,您将始终获得矩格式。

如果您不使用它,或者不想使用它,则可以映射您的数组:

const newArray = myArray.map(item => ({
  ...item,
  date: moment(item.date).format("L")
}));

-1
投票

新数组= MyArray.map(objectInArray => {objectInArray.date = moment(objectInArray.date).format('L')返回objectInArray})

© www.soinside.com 2019 - 2024. All rights reserved.