<template>
<div></div>
</template>
<script>
export default {
data() {
return {};
},
mounted() {
let data = [
{ id: "01", type: "01", name: "休假" },
{ id: "02", type: "03", name: "在班" },
{ id: "03", type: "03", name: "在班" },
{ id: "04", type: "02", name: "上海出差" },
{ id: "05", type: "02", name: "北京出差" },
{ id: "06", type: "04", name: "休息" },
{ id: "07", type: "04", name: "休息" },
];
this.mergeArray(data)
},
methods: {
mergeArray(data) {
let newdata = [];
let index = 1;
let i = 0;
for (let k in data) {
let aaa = [];
let { type, name } = data[i];
let { type: TYPE2, name: NAME2 } = data[i + 1] || {};
i++;
//类型相同且内容相同
if (type === TYPE2 && name === NAME2) {
index++;
} else {
if (index > 1) {
data.forEach((item) => {
// name相同并且type相同
if (item.name === data[k].name && item.type === data[k].type) {
aaa.push(item);
}
});
newdata.push({
...data[k],
arr: aaa,
});
} else {
newdata.push({
...data[k],
hasCol: index,
});
}
index = 1;
}
}
newdata.forEach(item => {
if (item.arr) {
item.type = item.arr.map(items => {return items.id}).join(",")
item.name = item.arr.map(items => {return items.name}).join(",")
}
})
console.log(newdata);
},
},
};
</script>
<style scoped lang="less">
</style>
vue 数组根据多个条件分类
于 2022-06-20 14:11:22 首次发布