我有两个数组,其中一个是稀疏的。我想在它们上执行基本上是外连接。
const a = ['a', 'b']
a[3] = 'c'
// a is Array(4) [ "a", "b", <1 empty slot>, "c" ]
R.zipSparse([1, 2, 3, 4], a)
// expected output: [[1, 'a'], [2, 'b'], [3, undefined], [4, 'c']]
有关如何在Ramda或普通Javascript欢迎中实现此功能的任何建议。
答案 0 :(得分:5)
这实际上是R.zip
的行为。
更具体地说,R.zip
将事物与报告的输入长度中的较小者组合在一起。两者都有长度4
,因此它将返回一个四元素数组作为响应。索引3
将包含[3, undefined]
。
当然,如果没有Ramda的话,这很容易写出来,就像@JoeWarner的回答和@dsfq的评论所示。
答案 1 :(得分:3)
function zipSparse(arr, join) {
return arr.map((i, index) => [i, join[index]])
}
为了解释这里发生了什么,我们使用map迭代器并遍历arr中的每个项目,然后在第二个数组join的索引处加入相同的项目
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map