首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript映射函数接受多个数组作为参数

javascript映射函数接受多个数组作为参数
EN

Stack Overflow用户
提问于 2013-11-20 23:17:25
回答 1查看 231关注 0票数 1

这样的js功能是如何编写的?

代码语言:javascript
复制
map(add, [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12])
 => [15, 18, 21, 24]

我正在尝试编写clojure map函数的原生js版本

代码语言:javascript
复制
(map + [1 2 3] [4 5 6])
=> [5 7 9]

其中map接受函数和其后任意数量的数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-20 23:36:49

有点像

代码语言:javascript
复制
pythonic_map = function(fun) {
    var args = [].slice.call(arguments, 1)
    return args[0].map(function(_, i) {
        return fun.apply(null, args.map(function(x) { return x[i] }));
    });
}

示例:

代码语言:javascript
复制
function add(a, b, c) {
    return a + b + c
}

z = pythonic_map(add, [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12])
console.log(z) // [15,18,21,24]

这使用第一个参数的长度,以使用最短/最长的参数:

代码语言:javascript
复制
pythonic_map = function(fun) {
    var args = [].slice.call(arguments, 1);
    return args.reduce(function(m, x) {
        return (x.length < m.length) ? x : m; // or > for the longest
    }).map(function(_, i) {
        return fun.apply(null, args.map(function(x) { return x[i] }));
    });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20109193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档