1、首先一級與二級相同的嵌套
let arr = [
{ date: '2020-01-06', age: '18'},
{ date: '2020-01-06', age: '25'},
{ date: '2020-01-07', age: '34'},
{ date: '2020-01-07', age: '18'},
{ date: '2020-01-07', age: '38'},
{ date: '2020-01-08', age: '26'},
{ date: '2020-01-09', age: '24'}
]
let dataArr = [];
arr.map(mapItem => {
if (dataArr.length == 0) {
dataArr.push({ date: mapItem.date, List: [mapItem] })
} else {
let res = dataArr.some(item=> {//判斷相同日期,有就添加到當前項
if (item.date == mapItem.date) {
item.List.push(mapItem)
return true
}
})
if (!res) {//如果沒找相同日期添加一個新對象
dataArr.push({ date: mapItem.date, List: [mapItem] })
}
}
})
結果
dataArr = [
{
date:'2020-01-06',
List: [
{ date: '2020-01-06', age: '18'},
{ date: '2020-01-06', age: '25'}
]
},
{
date:'2020-01-07',
List: [
{ date: '2020-01-07', age: '34'},
{ date: '2020-01-07', age: '18'},
{ date: '2020-01-07', age: '38'},
]
},
{
date:'2020-01-08',
List: [
{ date: '2020-01-08', age: '26'},
]
},
{
date:'2020-01-09',
List: [
{ date: '2020-01-09', age: '24' }
]
}
]
第二種情況:一級四位數(0001),二級八位數字(00010001)獲取的條件是通過一級的四位數字匹配二級的前四位數字
方法1:
var userArr = [
{ id: "0001", userName: "laozhang_1" },
{ id: "00010001", userName: "laozhang1" },
{ id: "00010002", userName: "laozhang1" },
{ id: "00010003", userName: "laozhang1" },
{ id: "0002", userName: "laowang" },
{ id: "00020002", userName: "laozhang2" },
{ id: "00020003", userName: "laowang" },
{ id: "00020004", userName: "laowang" },
{ id: "00020005", userName: "laowang" },
{ id: "00020006", userName: "laowang" }
];
let newArr = []
userArr.forEach(item => {
if (item.id.length === 4) {
newArr.push({ ...item, list: [] });
}
});
newArr.forEach(item => {
userArr.forEach(user => {
if (item.id !== user.id && item.id == user.id.substring(0, 4)) {
item.list.push(user);
}
});
});
console.log(newArr)
方法2:
var userArr = [
{ id: "0001", userName: "laozhang_1" },
{ id: "00010001", userName: "laozhang1" },
{ id: "00010002", userName: "laozhang1" },
{ id: "00010003", userName: "laozhang1" },
{ id: "0002", userName: "laowang" },
{ id: "00020002", userName: "laozhang2" },
{ id: "00020003", userName: "laowang" },
{ id: "00020004", userName: "laowang" },
{ id: "00020005", userName: "laowang" },
{ id: "00020006", userName: "laowang" }
];
let newArr = userArr.filter(item => item.id.length === 4)
newArr.forEach(item => {
item.list = userArr.filter(user => item.id !== user.id && item.id == user.id.substring(0, 4))
})
console.log(newArr)
總結:學好js基礎很重要