我在导航树中有节点。我想选择属于 url 的所有节点,以便突出显示它们。我让它工作但忘记了一个极端情况,即 url 的最后一部分以相同的字符串开头。
在这种情况下,如果有人在 url/products/foobar-super
我希望它选择/products
而/products/foobar-super
不是/products/foobar
.
describe('part of url', function () {
it('matches /products and /products/foobar-super', function () {
var current = '/producten/foobar-super';
var nodes = [
'/products',
'/products/foobar',
'/products/foobar-super',
];
var result = [];
nodes.forEach(function (node) {
if (new RegExp(node + '.*').test(current)) {
result.push(node);
}
});
result.should.eql([
'/products',
'/products/foobar-super',
]);
});
});
Jsfiddle 与测试:http: //jsfiddle.net/RKDga/2/
不确定是否可以使用正则表达式,我猜的另一个解决方案是拆分节点和当前 url/
比较它们。