在 ts 里 对RouteRecordRaw[] 去重
时间: 2023-12-21 18:07:27 浏览: 205
去除重复记录
在 TypeScript 中,如果想要对 `RouteRecordRaw[]` 类型的数组进行去重,可以使用以下方法:
1. 使用 Set
```typescript
import { RouteRecordRaw } from 'vue-router';
const routes: RouteRecordRaw[] = [
{ path: '/home', name: 'Home' },
{ path: '/about', name: 'About' },
{ path: '/home', name: 'Home' } // 重复的路由
];
const uniqueRoutes = Array.from(new Set(routes.map(route => JSON.stringify(route))))
.map(str => JSON.parse(str));
console.log(uniqueRoutes);
// Output: [{ path: '/home', name: 'Home' }, { path: '/about', name: 'About' }]
```
2. 使用 filter 和 findIndex
```typescript
import { RouteRecordRaw } from 'vue-router';
const routes: RouteRecordRaw[] = [
{ path: '/home', name: 'Home' },
{ path: '/about', name: 'About' },
{ path: '/home', name: 'Home' } // 重复的路由
];
const uniqueRoutes = routes.filter((route, index, self) =>
index === self.findIndex(r => r.path === route.path && r.name === route.name)
);
console.log(uniqueRoutes);
// Output: [{ path: '/home', name: 'Home' }, { path: '/about', name: 'About' }]
```
这些方法将根据路由对象的属性进行去重操作。根据具体需求选择适合的方法即可。请注意,如果路由对象的属性值是引用类型,需要根据实际情况来判断是否需要进行深度比较。
阅读全文