javascript - 下划线或lazy.js 映射 (0,1,2,3,4) + (1,2,3,4,5) ->(1,3,5,7,9)

标签 javascript node.js functional-programming underscore.js lazy-evaluation

我想将一个序列映射到另一个序列,例如

map (0,1,2,3,4) + (1,2,3,4,5) -> (1,3,5,7,9)

如何在 lazy.js 中做到这一点或underscore

谢谢!

最佳答案

您可以使用_.zip_.map,如下所示

var _ = require("underscore");

function sum(numbers) {
    var result = 0;
    for (var i = 0; i < numbers.length; i += 1) {
        result += numbers[i];
    }
    return result;
}

console.log(_.map(_.zip([0, 1, 2, 3, 4], [1, 2, 3, 4, 5]), sum))
// [ 1, 3, 5, 7, 9 ]

由于总是只有两个数字,因此您可以像这样简化

var result = _.chain([0, 1, 2, 3, 4])
    .zip([1, 2, 3, 4, 5])
    .map(function(numbers) {
        return numbers[0] + numbers[1];
    })
    .value();

console.log(result);

你可以让它更通用和干净一点,就像这样

function sum(numbers) {
    return numbers.reduce(function(result, current) {
        return result + current;
    }, 0);
}

var result = _.chain([0, 1, 2, 3, 4])
    .zip([1, 2, 3, 4, 5])
    .map(sum)
    .value();

或者更简单,就像第一个答案

console.log(_.map(_.zip([0, 1, 2, 3, 4], [1, 2, 3, 4, 5]), sum));

关于javascript - 下划线或lazy.js 映射 (0,1,2,3,4) + (1,2,3,4,5) ->(1,3,5,7,9),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463866/

相关文章:

node.js - 由于缺少 MongoDB,无法在全新安装的 Ubuntu Linux 上运行 Meteor 应用程序

node.js - 当一个请求依赖于另一个时,您如何链接 super 测试请求?

java - 我们如何使用Java函数实现add(4)(10)(20)(3)(1).total?

javascript - 表行引用和值传递

javascript - JQuery .click() 不选择元素

javascript - 隐藏环回模型中的嵌套属性

functional-programming - 功能/ Actor 处理 WorldState 中的先有鸡还是先有蛋

javascript - 我可以将参数直接传递给 .js 文件,以及如何获取值

javascript - Jquery 函数不适用于函数参数

F#:对复杂列表进行分组