如何将一个数组中的值与另一对数组中的值相加?

德拉卡SAN

如何将一个数组的等于索引的值添加到另一个数组?

我知道我可以做这样的事情:

var i = 0,
    a = [1, 2, 3],
    b = [4, 5, 6],
    total = [];

while (i < a.length) {
    total[i] = a[i] + b[i];
    i = i + 1;
}

console.log(total); //[5, 7, 9]

但是,有没有一种标准或更快的方式来做到这一点?

(在我的具体情况下,a.length === b.length在所有情况下)。

用户名

您可能会发现它更紧凑:

a.map(function(v, i) { return v + b[i]; })

在ES6中它将更加紧凑:

a.map((v, i) => v + b[i])

我们可以编写自己的版本,map版本在两个数组上并行循环:

function mapTwo(arr1, arr2, fn, ctxt) {
    return arr1.map(function(v, i) {
        return fn.call(ctxt, v, arr2[i], i);
    };
}

现在我们可以解决原始问题

mapTwo(a, b, function(v1, v2) { return v1 + v2; }))

或者,如果我们真的想要,让我们编写一个map许多数组进行迭代的对象它将使用一组值(每个输入数组中的一个)调用回调。

function mapMany(arrays, fn, ctxt) {
    fn = fn.bind(ctxt);
    return arrays[0].map(function(_, i) {
        return fn(arrays.map(function(array) { return array[i]; }), i);
    };
}

现在我们可以做

mapMany([a,b], sum);

这里sum

function sum(values) {
    return values.reduce(function(result, val) { return result+val; });
}

我们还可以编写一个更通用的函数,zip将输入数组中每个索引处的元素组合到一个数组中,从而返回一个数组数组。现在,我们将处理数组长度不同的情况。

function zip(arrays) {
    var result = [],
        max = Math.max.apply(0, arrays.map(function(array) { return array.length; }));
    for (var i=0; i<max; i++) {
        result.push(arrays.map(function(array) { return array[i]; });
    } 
    return result;
}

现在我们可以用

zip([a,b]).map(sum)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一个数组中的值添加到另一个数组?

来自分类Dev

如何将一个数组中的一系列值除以另一个数组中的一系列值

来自分类Dev

PHP:如何将一个数组中的键与另一个数组中的值进行比较,并返回匹配项?

来自分类Dev

如何将一个数组中的一组数字相加?

来自分类Dev

如何将一个数组中的值分配给另一个数组n次

来自分类Dev

如何将一个数组值映射到另一个数组值

来自分类Dev

将一个数组中的某些值与另一个数组中的值组合

来自分类Dev

php-将一个数组中的值与另一个数组中的值互斥

来自分类Dev

将一个数组列表中的值引用到另一个数组中的值

来自分类Dev

将一个数组中的值与另一个数组中的值合并/覆盖

来自分类Dev

将一个数组中的值分配给另一个数组中的值

来自分类Dev

将数组中的值与另一个数组中的值进行匹配

来自分类Dev

如何将一个数组键值与另一个数组索引值进行比较?

来自分类Dev

如何将一个数组键值与另一个数组索引值进行比较?

来自分类Dev

如何将数组值复制到另一个数组

来自分类Dev

如何根据另一个数组的值对数组的值进行排序

来自分类Dev

如何从另一个数组中的一个数组中选择一个值?

来自分类Dev

将一个数组(键)中的对象数组变成另一个数组(值)

来自分类Dev

在PHP / Opencart中,如何将一个数组放入另一个数组中?

来自分类Dev

如何将随机数组的值添加到另一个数组中,然后在计算出现的值的同时显示它们?C ++

来自分类Dev

如何将随机数组的值添加到另一个数组中,然后在计算出现的值的同时显示它们?C ++

来自分类Dev

如何将数组中的特定元素放到另一个数组中

来自分类Dev

仅将特定值存储在另一个数组中的数组中

来自分类Dev

如何使用另一个数组中的值从一个数组中检索javascript

来自分类Dev

将数组中的一个值组合到另一个数组的所有值 php

来自分类Dev

通过另一个数组中的值过滤一个数组?

来自分类Dev

如何在PHP 5.3中基于另一个数组中的值对数组元素的数组进行排序?

来自分类Dev

值与数组中的上一个值相加

来自分类Dev

如何将一个字段的值聚合到一个数组中?

Related 相关文章

  1. 1

    如何将一个数组中的值添加到另一个数组?

  2. 2

    如何将一个数组中的一系列值除以另一个数组中的一系列值

  3. 3

    PHP:如何将一个数组中的键与另一个数组中的值进行比较,并返回匹配项?

  4. 4

    如何将一个数组中的一组数字相加?

  5. 5

    如何将一个数组中的值分配给另一个数组n次

  6. 6

    如何将一个数组值映射到另一个数组值

  7. 7

    将一个数组中的某些值与另一个数组中的值组合

  8. 8

    php-将一个数组中的值与另一个数组中的值互斥

  9. 9

    将一个数组列表中的值引用到另一个数组中的值

  10. 10

    将一个数组中的值与另一个数组中的值合并/覆盖

  11. 11

    将一个数组中的值分配给另一个数组中的值

  12. 12

    将数组中的值与另一个数组中的值进行匹配

  13. 13

    如何将一个数组键值与另一个数组索引值进行比较?

  14. 14

    如何将一个数组键值与另一个数组索引值进行比较?

  15. 15

    如何将数组值复制到另一个数组

  16. 16

    如何根据另一个数组的值对数组的值进行排序

  17. 17

    如何从另一个数组中的一个数组中选择一个值?

  18. 18

    将一个数组(键)中的对象数组变成另一个数组(值)

  19. 19

    在PHP / Opencart中,如何将一个数组放入另一个数组中?

  20. 20

    如何将随机数组的值添加到另一个数组中,然后在计算出现的值的同时显示它们?C ++

  21. 21

    如何将随机数组的值添加到另一个数组中,然后在计算出现的值的同时显示它们?C ++

  22. 22

    如何将数组中的特定元素放到另一个数组中

  23. 23

    仅将特定值存储在另一个数组中的数组中

  24. 24

    如何使用另一个数组中的值从一个数组中检索javascript

  25. 25

    将数组中的一个值组合到另一个数组的所有值 php

  26. 26

    通过另一个数组中的值过滤一个数组?

  27. 27

    如何在PHP 5.3中基于另一个数组中的值对数组元素的数组进行排序?

  28. 28

    值与数组中的上一个值相加

  29. 29

    如何将一个字段的值聚合到一个数组中?

热门标签

归档