javascript - 分割字符串并找到其结果的有序组合的最优雅的方法

标签 javascript underscore.js

我正在寻找最优雅的方法来通过分隔符分割字符串并找到其可能的组合。

例如:

'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 已激活以下状态:homehome.usershome.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/

相关文章:

javascript - 如何混淆音频标签的 src 属性

javascript - 检测何时按下@键

javascript - 是否可以使用下划线按多个值过滤数组值?

javascript - 使用 Javascript 和下划线循环嵌套对象和数组

莫里斯图表的 Javascript TypeError

javascript - HERE map Javascript API 替代路线

javascript - Uncaught ReferenceError : JST is not defined on Rails Backbone

javascript - 单击元素时一种模式呈现不同的模板

backbone.js - underscore.js 过滤函数

javascript - 如何强制 d3 的日期轴绘制未满的第一个月和最后一个月的刻度线[FIDDLE UPDATED]?