带稀疏数组的 Zip
Zip with sparse array
我有两个数组,其中一个是稀疏数组。我想对它们执行本质上是 outer join 的操作。
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。
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
这实际上是R.zip
的行为。
更具体地说,R.zip
组合了报告的输入长度中的较小者。它们的长度都是 4
,因此它将 return 一个 four-element 数组作为响应。索引 3
将包含 [3, undefined]
.
当然,如果没有 Ramda,这很容易自己写,正如@JoeWarner 的回答和@dsfq 的评论所示。
我有两个数组,其中一个是稀疏数组。我想对它们执行本质上是 outer join 的操作。
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。
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
这实际上是R.zip
的行为。
更具体地说,R.zip
组合了报告的输入长度中的较小者。它们的长度都是 4
,因此它将 return 一个 four-element 数组作为响应。索引 3
将包含 [3, undefined]
.
当然,如果没有 Ramda,这很容易自己写,正如@JoeWarner 的回答和@dsfq 的评论所示。