lodash / underscore.js 函数创建由 x 的 n 个副本组成的数组

lodash / underscore.js function to create array consisting of n copies of x

我怀疑我问这个问题的原因是我的词汇表缺少一个更好的术语来描述我正在寻找的函数,因此我无法找到它google 和 lodash API 文档。

Do underscorelodash 提供了一个专用函数,通过简单地将 x 的 (return) 值推入一个空数组 [=15] 来生成一个数组=] 次 x 是值还是生成函数?

我可以想到这样一个函数的许多用例,尽管这个功能很容易用一个简单的 for 循环复制,但实用程序库提供的函数如 underscorelodash 通常是,它们的目的通常是提供最佳实施。

原来 _.times nearly 提供了我正在寻找的功能;如官方 API 文档所述:

_.times(n, [iteratee=_.identity], [thisArg]) 

// Invokes the iteratee function n times, returning an array of the results of each invocation. The iteratee is bound to thisArg and invoked with one argument; (index).

不过,这显然不允许我传递静态值。

不是专用函数,但也许这就足够了?:

.map(.range(n), x)

编辑: 正如 Pointy 所建议的,如果 x 是一个生成器,_.times() 将执行您所描述的操作:

_.times(n, x)

_.times 将忽略 x 如果它不是一个函数,所以你可能需要为你的用途使用一个 mixin:

_.mixin({ 
    generate: function (length, x) { 
        return _.times(length, _.isFunction(x) ? x : _.constant(x));
    }
});