var arr1 = ["03-26", "03-27", "03-28","03-29"]
var arr2 = [
{
"type": "6",
"name": "哈哈哈",
"date": [
{
"time": "03-27",
"num": "5"
},
{
"time": "03-28",
"num": "13"
},
]
},
{
"type": "1",
"name": "嘻嘻嘻",
"date": [
{
"time": "03-27",
"num": "1"
},
]
},
]
有两个数组arr1和arr2,我想把arr2变成这样
arr2 = [
{
"type": "6",
"name": "哈哈哈",
"date": [
{
"time": "03-26",
"num": "0"
},
{
"time": "03-27",
"num": "5"
},
{
"time": "03-28",
"num": "13"
},
{
"time": "03-29",
"num": "0"
}
]
},
{
"type": "1",
"name": "嘻嘻嘻",
"date": [
{
"time": "03-26",
"num": "0"
},
{
"time": "03-27",
"num": "1"
},
{
"time": "03-28",
"num": "0"
},
{
"time": "03-29",
"num": "0"
}
]
},
]
不知道这样符合不符合你的需求~
var arr1 = ["03-26", "03-27", "03-28", "03-29"]
var arr2 = [
{
"type": "6",
"name": "哈哈哈",
"date": [
{
"time": "03-27",
"num": "5"
},
{
"time": "03-28",
"num": "13"
},
]
},
{
"type": "1",
"name": "嘻嘻嘻",
"date": [
{
"time": "03-27",
"num": "1"
},
]
},
]
// 有两个数组arr1和arr2,我想把arr2变成这样
let arr3 = [
{
"type": "6",
"name": "哈哈哈",
"date": [
{
"time": "03-26",
"num": "0"
},
{
"time": "03-27",
"num": "5"
},
{
"time": "03-28",
"num": "13"
},
{
"time": "03-29",
"num": "0"
}
]
},
{
"type": "1",
"name": "嘻嘻嘻",
"date": [
{
"time": "03-26",
"num": "0"
},
{
"time": "03-27",
"num": "1"
},
{
"time": "03-28",
"num": "0"
},
{
"time": "03-29",
"num": "0"
}
]
},
]
// 根据上述内容新建合并方法
/**
* 合并数组
* @param {string[]} t1 代表第一种类型的数组
* @param {{
* type:string,
* name:string,
* date:{
* time:string,
* num:string
* }[]
* }[]} t2 代表第二种类型的数组
*/
function mergeArray(t1, t2) {
for (let i = 0; i < t2.length; i++) {
for (let j = 0; j < t1.length; j++) {
// 如果不存在的话,塞入数组中
if (!t2[i].date.find(a => a.time == t1[j])) t2[i].date.push({ time: t1[j], num: "0" })
}
// 做一个简单的排序
t2[i].date.sort((a, b) => a.time.replace(/-/, '') - b.time.replace(/-/, ''));
}
return t2;
}
// 测试
console.log(JSON.stringify(mergeArray(arr1, arr2)) == JSON.stringify(arr3));