我正在寻找最优雅的方法来通过分隔符分割字符串并找到其可能的组合。
例如:
'foo.bar.baz'
=>
['foo', 'foo.bar', 'foo.bar.baz']
我也不介意使用 underscorejs。
编辑:
到目前为止我已经尝试过
function comb(words) {
var combinations = [];
for (var i = 0; i < words.length; i++) {
var currentState = [];
for (var j = 0; j <= i; j++) {
currentState.push(words[j]);
}
console.log('current state', currentState.join('.'));
combinations.push(currentState.join('.'));
}
return combinations;
}
console.log('combinations', comb('foo.bar.baz'.split('.')));
输出组合['foo','foo.bar','foo.bar.baz']
我将其用于具有嵌套状态的应用程序。例如:home.users.list
已激活以下状态:home
、home.users
、home.users.list
.
最佳答案
我不确定什么是“最优雅”,但这是一个使用下划线的相当紧凑的解决方案:
function comb(words) {
var accumulate = "";
return _.map(words.split("."), function(word) {
var t = accumulate + word;
accumulate = t + ".";
return t;
});
}
与您的示例略有不同,因为 comb
的参数是您要拆分的字符串。显然,您可以在调用之前进行拆分,如您的示例所示,而不是在函数内部进行拆分。
关于javascript - 分割字符串并找到其结果的有序组合的最优雅的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18669810/