Mat*_*zer 5 javascript arrays functional-programming ramda.js
给定以下数组:
const array1 = ["a1", "b1", "c1", "d1"],
array2 = ["a2", "b2"],
array3 = ["a3", "b3", "c3"]
Run Code Online (Sandbox Code Playgroud)
是否有任何ramda函数来简化我可以给出一个或多个数组的以下场景?
const nestedMap = map => {
const result = []
for(let item1 of array1)
for(let item2 of array2)
for(let item3 of array3)
result.push(map(item1, item2, item3))
return result
}
Run Code Online (Sandbox Code Playgroud)
整个功能如下:
// Sample usage
nestedMap((item1, item2, item3) => `${item1} ${item2} ${item3}`, array1, array2, array3)
Run Code Online (Sandbox Code Playgroud)
我希望避免重新发明轮子.
注意:Vanilla javascript或任何其他库都可以接受.我最初谈到ramda,因为它有很多功能,也许我错过了哪些可以帮助解决这个问题
您可以在此处使用数组的applicative instance来简化R.lift您的函数:
const array1 = ["a1", "b1", "c1", "d1"],
array2 = ["a2", "b2"],
array3 = ["a3", "b3", "c3"]
const nestedMap = R.lift((item1, item2, item3) => `${item1} ${item2} ${item3}`)
console.log(nestedMap(array1, array2, array3))Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>Run Code Online (Sandbox Code Playgroud)