vue遍历一个数组对象,每个对象里面都有一个date字段,判断date相不相同,在遍历每个对象里面的orderList字段,判断orderList里的status和menuType字段是不是相同 如果相同就把orderList合并在一起
时间: 2023-12-10 15:40:51 浏览: 61
可以按照以下步骤实现:
1. 首先,遍历数组对象,把每个对象的date字段提取出来,放入一个新的数组中,并去重。
```javascript
let dateArr = []
for (let i = 0; i < objArr.length; i++) {
let date = objArr[i].date
if (!dateArr.includes(date)) {
dateArr.push(date)
}
}
```
2. 然后,遍历去重后的日期数组,再遍历原始数组对象,找到相同日期的对象,并把它们的orderList合并在一起,放入一个新的数组中。
```javascript
let mergeArr = []
for (let i = 0; i < dateArr.length; i++) {
let date = dateArr[i]
let tempObj = {date: date, orderList: []}
for (let j = 0; j < objArr.length; j++) {
if (objArr[j].date === date) {
tempObj.orderList = tempObj.orderList.concat(objArr[j].orderList)
}
}
mergeArr.push(tempObj)
}
```
3. 最后,遍历新的数组,把orderList中status和menuType字段相同的项合并在一起。
```javascript
for (let i = 0; i < mergeArr.length; i++) {
let orderList = mergeArr[i].orderList
let tempOrderList = []
for (let j = 0; j < orderList.length; j++) {
let item = orderList[j]
let index = tempOrderList.findIndex((el) => {
return el.status === item.status && el.menuType === item.menuType
})
if (index === -1) {
tempOrderList.push(item)
} else {
tempOrderList[index].amount += item.amount
tempOrderList[index].price += item.price
}
}
mergeArr[i].orderList = tempOrderList
}
```
这样,就可以实现遍历一个数组对象,每个对象里面都有一个date字段,判断date相不相同,在遍历每个对象里面的orderList字段,判断orderList里的status和menuType字段是不是相同 如果相同就把orderList合并在一起的需求了。
阅读全文