将数组数据转换为对象

use*_*123 0 javascript arrays json object

所以我有这个数组。

["2020-01-31 18:31:01", "2020-02-03 14:04:30", "2020-02-04 05:58:48", "2020-02-04 14:11:16"]
Run Code Online (Sandbox Code Playgroud)

我喜欢将它转换为对象。

0: {date: "2020-01-31", time: ["8:31:01"]}
1: {date: "2020-02-03", time: ["4:04:30"]}
2: {date: "2020-02-04", time: ["5:58:48", "14:11:16"]}
Run Code Online (Sandbox Code Playgroud)

但我得到了这个结果

0: {date: "2020-01-31", time: "8:31:01"}
1: {date: "2020-02-03", time: "4:04:30"}
2: {date: "2020-02-04", time: "5:58:48"}
Run Code Online (Sandbox Code Playgroud)

这是我的代码

var times = response.data.time;
var dates = [];
var t = [];
var d = '';
var newData = [];
times.forEach(time => {

   var da = time.substring(0, 10);
   var ti = time.substring(12, 19);

   if(d == da) {

     t.push(ti);

   } else {

     d = da

     var dt = {date: da, time: ti};
     newData.push(dt);

   }


 });
Run Code Online (Sandbox Code Playgroud)

我很难弄清楚这个希望你能帮助我。

谢谢。

Hao*_* Wu 5

尝试使用Array.prototype.reduce功能:

const array = ["2020-01-31 18:31:01", "2020-02-03 14:04:30", "2020-02-04 05:58:48", "2020-02-04 14:11:16"];

const newData = array.reduce((acc, cur) => {
	const [date, time] = cur.split(' ');
	const dateObj = acc.find(e => e.date === date);
	if (dateObj) {
		dateObj.time.push(time);
	} else {
		acc.push({ date, time: [time] });
	}
	return acc;
}, []);

console.log(newData);
Run Code Online (Sandbox Code Playgroud)