Javascript 通过在JS中映射条件来转换数组
我从API响应中得到了一个数组,如下所示: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”,持续时间:
[
{日期:“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) }
})