Javascript 通过在JS中映射条件来转换数组

Javascript 通过在JS中映射条件来转换数组,javascript,react-native,Javascript,React Native,我从API响应中得到了一个数组,如下所示: [ {日期:“2021-04-09T12:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”}, {日期:“2021-04-09T22:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”}, {日期:“2021-04-10T2:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”}, {日期:“2021-04-10T22:00”,持续时间:

我从API响应中得到了一个数组,如下所示:

[
{日期:“2021-04-09T12:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”},
{日期:“2021-04-09T22:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”},
{日期:“2021-04-10T2:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”},
{日期:“2021-04-10T22:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“AM”},

]
您可以使用reduce功能获得所需的结果


您可以使用MomentJS包将任何格式的日期转换为时间,代码如下所示


const data=[
  {date: "2021-04-09T12:00",duration: 1,available: 1,booked: 0,product_id: 2390,date_format: "PM"},
  {date: "2021-04-09T22:00",duration: 1,available: 1,booked: 0,product_id: 2390,date_format: "PM"},
  {date: "2021-04-10T2:00",duration: 1,available: 1,booked: 0,product_id: 2390,date_format: "PM"},
  {date: "2021-04-10T22:00",duration: 1,available: 1,booked: 0,product_id: 2390,date_format: "AM"},
]


const formatTime = data.map((item) => {
  return {...item,date:moment(item.date).format("LT")}
});

formatTime(data)

你可以勾选这个沙盒作为参考


如果必须容纳更多的日期,下面类似的内容可能适用于
减少
设置
:-

const数据=[
{日期:“2021-04-09T12:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”},
{日期:“2021-04-09T22:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”},
{日期:“2021-04-10T2:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“PM”},
{日期:“2021-04-10T22:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“AM”},
{日期:“2021-05-09T22:00”,持续时间:1,可用时间:1,预订时间:0,产品编号:2390,日期格式:“AM”},
]
施工日期=[“2021-04-09”];
函数转换(数据、日期){
const dateSet=新的集合(日期);
const transformedOutput=data.reduce((输出,当前)=>{
常量[日期,时间]=当前日期拆分('T');
如果(日期集has(日期))
{
push({…curr,date:time})
}
返回输出;
},[])
返回转换输出;
}

日志(转换(数据、日期))您可以在不使用moment.js的情况下使用它

let date_groups = [
    { date: "2021-04-09T12:00", duration: 1, available: 1, booked: 0, product_id: 2390, date_format: "PM" },
    { date: "2021-04-09T22:00", duration: 1, available: 1, booked: 0, product_id: 2390, date_format: "PM" },
    { date: "2021-04-10T2:00", duration: 1, available: 1, booked: 0, product_id: 2390, date_format: "PM" },
    { date: "2021-04-10T22:00", duration: 1, available: 1, booked: 0, product_id: 2390, date_format: "AM" },
  ]

  let date_filter = '2021-04-09'

  let time_group = date_groups
    .filter(date_group => date_group.date.includes(date_filter))
    .map(date_group => {
      let time_divider = date_group.date.indexOf('T') + 1
      return { ...date_group, date: date_group.date.substring(time_divider, date_group.date.length) }
    })

是否有多个这样的
date
值作为筛选数组的基础?这取决于。它也可以是一个或多个@拉克夏塔库
let date_groups = [
    { date: "2021-04-09T12:00", duration: 1, available: 1, booked: 0, product_id: 2390, date_format: "PM" },
    { date: "2021-04-09T22:00", duration: 1, available: 1, booked: 0, product_id: 2390, date_format: "PM" },
    { date: "2021-04-10T2:00", duration: 1, available: 1, booked: 0, product_id: 2390, date_format: "PM" },
    { date: "2021-04-10T22:00", duration: 1, available: 1, booked: 0, product_id: 2390, date_format: "AM" },
  ]

  let date_filter = '2021-04-09'

  let time_group = date_groups
    .filter(date_group => date_group.date.includes(date_filter))
    .map(date_group => {
      let time_divider = date_group.date.indexOf('T') + 1
      return { ...date_group, date: date_group.date.substring(time_divider, date_group.date.length) }
    })