【发布时间】:2020-07-13 21:27:02
【问题描述】:
我有两个数组 a 和 b。
任何一个数组都可以有任意数量的项目。但是它们的长度可能不匹配。
我需要匹配数组长度,以便将两个数组压缩在一起。
例如:a = [1, 2, 3, 4]
和
b = [1, 2]
变成:a = [1, 2, 3, 4]
和
b = [1, 1, 2, 2]
我需要b 来匹配a 的长度,反之亦然,以匹配更长的长度。
以及传播较短数组的值,直到与较长数组的长度匹配。
较短数组上的展开将仅包含开始时存在的值。
例如:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
和
b = [1, 2]
变成
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
和
b = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2]
另一个例子:a = [21, 22, 23, 24, 25, 26, 27]
和
b = [39, 40, 41, 42]
变成:a = [21, 22, 23, 24, 25, 26, 27]
和
b = [39, 39, 40, 40, 41, 41, 42]
使用 Ramda 解决了它
const a = [1, 2] const b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
R.sort(R.gte, R.flatten(R.repeat(a, b.length / 2)))
【问题讨论】:
-
扩展较短数组的逻辑是什么?如果较长的是
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]而较短的是[1, 2]会发生什么? -
你应该解释你想如何传播它们,但我几乎 100% 肯定你做了一些非常古怪的事情。
-
@VLAZ 我需要将两个数组压缩成对 [1, 2]。对于您的示例,它只是 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 和 [1, 1, 1, 1, 1, 2, ,2 ,2, 2, 2 ]
-
@VLAZ 谢谢你用 Ramda 解决了它 const a = [1, 2] const b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] R .sort(R.gte, R.flatten(R.repeat(a, b.length / 2)))
-
@TristanForward just in case you're interested in a pure JS solution
标签: javascript arrays list