javascript - 将数组数据转换为对象

标签 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"]

我喜欢将其转换为对象。

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"]}

但是我得到了这个结果

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"}

这是我的代码

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);

   }


 });

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

谢谢。

最佳答案

尝试使用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);

关于javascript - 将数组数据转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60087107/

相关文章:

javascript - 从ajax页面调用javascript函数

javascript - 在javascript中单击按钮时添加声音

javascript - jQuery 不会在页面加载时 append 克隆

php - 如何组合这两个 PHP 数组?

sql - 需要从 postgresql 表中动态选择一个 JSON 数组元素

javascript - 防止图像改变大小(需要相同的高度)

javascript - 使用子数组 Angular 自动完成选择

java - 如何对数组中不断更新的(动态)对象进行排序

javascript - 在ReactJS中访问数组中的对象

java - 如何解决com.fasterxml.jackson.databind.JsonMappingException?