ナビゲーション ツリーにノードがあります。URL の一部であるすべてのノードを選択して、強調表示できるようにします。私はそれを機能させましたが、URL の最後の部分が同じ文字列で始まるエッジ ケースを忘れていました。
この場合、誰かがその URLにいる場合は、 and/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を分割して/
比較することです。