在Javascript中列出自嵌套

问题描述 投票:0回答:2

问题

我正在尝试实现一个将列表转换为第二个列表的函数,其中第二个列表本身有两个子列表。该函数必须通过在链中调用来实现


[1,2,3] => [[1,2,3],[1,2,3]]

函数形式应该看起来像这样,其中

fn
是我正在寻找的函数


[1,2,3].map(x=>[x]).fn() //  => [[[1],[2],[3]],[[1],[2],[3]]]

javascript arrays function functional-programming
2个回答
1
投票

您已经有了几个使用纯 JavaScript 的选项。

如果您只需要其中两个子列表,这将是我的偏好:

xs => [xs, xs]

如果您需要可变数量的子列表,您可以这样做:

x => xs => Array(x).fill(xs)

需要克隆

xs
吗?

只要你克制住变异,你就不需要恕我直言。当您确实需要变异时,只需使用常见的嫌疑人,例如

Array#map
Array#filter
等。


-2
投票

解决方案

正如下面评论中所建议的那样

[1,2,3,4].reduce(([l, r], x) => [[...l, x], [...r, x]], [[], []]) // => [[1,2,3,4],[1,2,3,4]]
© www.soinside.com 2019 - 2024. All rights reserved.