字符串阶梯化

190 阅读1分钟

在利用antd的Menu组件构成菜单时,遇到了Menu组件上的openKeys属性的赋值问题,记录下

首先openKeys是一个数组,比如当前路径是/a/b/c,那么openKeys应该是 ['/a','/a/b']

const pathname = "/a/b/c/d";
// 转化成 [a,b,c,d]
let keys = pathname.split("/").filter((key) => key);
// 去除最后一个d,返回[a,b,c]
keys.pop(); // 弹出最后一个菜单
// 转化成 [[a],[a,b],[a,b,c]]
keys = keys.map((key, index) => keys.slice(0, index + 1));
// 转化成 ['/a','/a/b', '/a/b/c']
keys = keys.map(key => `/${key.join('/')}`);

[有更好的方法,评论告知]