Javascript 如何在React JS中组合具有相同日期的数组
我有一个数组:Javascript 如何在React JS中组合具有相同日期的数组,javascript,reactjs,redux,frontend,Javascript,Reactjs,Redux,Frontend,我有一个数组: data = [ {date: 4/15/2020, 9:46:07 PM, value: "abc"}, {date: 4/15/2020, 11:19:18 PM, value: "xyz"}, {date: 4/16/2020, 1:25:13 PM, value: "def"}, {date: 4/17/2020, 5:6:17 PM, value: "pqr"} ]; 我必须比较日期对象并合并数组 因
data = [ {date: 4/15/2020, 9:46:07 PM, value: "abc"},
{date: 4/15/2020, 11:19:18 PM, value: "xyz"},
{date: 4/16/2020, 1:25:13 PM, value: "def"},
{date: 4/17/2020, 5:6:17 PM, value: "pqr"}
];
我必须比较日期对象并合并数组
因此,预期输出如下所示:
data = [ {date: 4/15/2020, value: ["abc", "xyz"]},
{date: 4/16/2020, value: ["def"]},
{date: 4/17/2020, value: ["pqr"]}
];
我怎样才能做到这一点
提前谢谢 我的方法:
data = [ {date: 4/15/2020, 9:46:07 PM, value: "abc"},
{date: 4/15/2020, 11:19:18 PM, value: "xyz"},
{date: 4/16/2020, 1:25:13 PM, value: "def"},
{date: 4/17/2020, 5:6:17 PM, value: "pqr"}
];
// Create a map for the dates
let dataMap = {};
data.forEach((el) => {
let tempDate = getDateFormat(el.date);
if (tempDate in dateMap) {
dateMap[tempDate].value.push(el.value);
} else {
dateMap[tempDate] = {
date: tempDate,
value: [el.value],
};
}
});
data = [];
// Fill the data
Object.keys(dataMap).forEach((el) => data.push(dataMap[el]));
// The format of date
function getDateFormat(date) {
return (
date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear()
);
}
const res=[]
for(设i=0;ir.date!==data[i].date)){
res.push(数据[i])
}否则{
const index=res.findIndex(r=>r.date==data[i].date)
res[index]={…res[index],值:[res[index]。值,数据[i]。值]}
}
}
console.log(res)
它只在数据中只有一个值时工作。使用
reduce
值非常方便
const数据=[
{日期:“2020年4月15日,晚上9:46:07”,数值:“abc”},
{日期:“2020年4月15日,晚上11:19:18”,值:“xyz”},
{日期:“2020年4月16日,下午1:25:13”,值:“def”},
{日期:“2020年4月17日,下午5:6:17”,数值:“pqr”}
]
const newArray=data.reduce((acc,dt)=>{
施工日期=新日期(日期)
const y=new Intl.DateTimeFormat('en',{year:'numeric'})。格式(日期)
const m=new Intl.DateTimeFormat('en',{month:'numeric'})。格式(日期)
const d=new Intl.DateTimeFormat('en',{day:'2位'})。格式(日期)
const formattedate=`${m}/${d}/${y}`
const dateAcc=acc[格式化日期]
如果(!dateAcc){
acc[格式化日期]={
日期:年月日,
值:[dt.值]
}
}否则{
acc[FormattedDate].value.push(dt.value)
}
返回acc
}, {})
console.log(newArray)
日期值的类型是什么?日期类型是一个对象。
const res = []
for (let i = 0; i < data.length; i++) {
if (res.every(r => r.date !== data[i].date)) {
res.push(data[i])
} else {
const index = res.findIndex(r => r.date == data[i].date)
res[index] = {...res[index], value: [res[index].value, data[i].value]}
}
}
console.log(res)