Как найти дату в массиве объектов? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть массив объектов, он содержит некоторое значение времени данных. Как найти ключ объекта с помощью «Дата» и преобразовать значение в момент времени даты?

const old = [
    {name: "Ann", startDate: "2014-11-12T07:45:07.753", endDate: "2014-11-13T07:45:07.753"},
    {name: "Ben", startDate: "2014-11-12T07:45:07.753", endDate: "2014-11-13T07:45:07.753"}
]

Сначала я хочу проверить, имеет ли ключ объекта строку «Дата», затем он преобразует значение объекта в момент (значение) .format («ГГГГ-ММ-ДД ч: мм: сс а»)

const new = [
    {name: "Ann", startDate: "2014-11-12 7:45:07am", endDate: "2014-11-13 7:45:07 am"},
    {name: "Ben", startDate: "2014-11-12 7:45:07am", endDate: "2014-11-13 7:45:07 am"}
]

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Все, что вам нужно сделать, это перебрать массив, а затем значения объекта и обновить их, если строка ключа содержит Date, поскольку вы предлагаете свое условие, которое вы можете выполнить с помощью indexOf function

const old = [
    {name: "Ann", startDate: "2014-11-12T07:45:07.753", endDate: "2014-11-13T07:45:07.753"},
    {name: "Ben", startDate: "2014-11-12T07:45:07.753", endDate: "2014-11-13T07:45:07.753"}
]

const res = old.map(obj => {
   return Object.assign({}, ...Object.keys(obj).map((key) => {
      if(key.indexOf("Date") > -1) {
        return {[key]: moment(obj[key]).format("YYYY-MM-DD h:mm:ss a")}
      }else {
        return {[key]: obj[key]}
      }
   }))
})
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
0 голосов
/ 15 мая 2019

Вы можете использовать moment.isValid для проверки правильности даты (поскольку вы уже используете momentjs):

const old = [{ name: "Ann", startDate: "2014-11-12T07:45:07.753", endDate: "2014-11-13T07:45:07.753" }, { name: "Ben", startDate: "2014-11-12T07:45:07.753", endDate: "2014-11-13T07:45:07.753" } ]

let result = old.map(o => {
  Object.keys(o).forEach(k => {
    let d = moment(new Date(o[k]))
    if(d.isValid()) o[k] = moment(d).format("YYYY-MM-DD hh:mm:ss a")
  })
})

console.log(old)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>

Затем вы должны сопоставить через map ключи объекта и для каждого из этих ключей проверить, указывают ли они на действительную дату.если это так, преобразуйте с помощью moment и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...