我正在尝试实现一个将列表转换为第二个列表的函数,其中第二个列表本身有两个子列表。该函数必须通过在链中调用来实现
即
[1,2,3] => [[1,2,3],[1,2,3]]
函数形式应该看起来像这样,其中
fn
是我正在寻找的函数
[1,2,3].map(x=>[x]).fn() // => [[[1],[2],[3]],[[1],[2],[3]]]
您已经有了几个使用纯 JavaScript 的选项。
如果您只需要其中两个子列表,这将是我的偏好:
xs => [xs, xs]
如果您需要可变数量的子列表,您可以这样做:
x => xs => Array(x).fill(xs)
需要克隆
xs
吗?
只要你克制住变异,你就不需要恕我直言。当您确实需要变异时,只需使用常见的嫌疑人,例如
Array#map
、Array#filter
等。
正如下面评论中所建议的那样
[1,2,3,4].reduce(([l, r], x) => [[...l, x], [...r, x]], [[], []]) // => [[1,2,3,4],[1,2,3,4]]