繁体   English   中英

有没有更好的方法来对2个数组进行按元素操作

[英]Is there a better way to do element-wise operations on 2 arrays

我需要对2个数组进行逐元素求和。 除了使用嵌套循环外,还有其他更有效的方法吗?

我正在使用JavaScript ES6。

我曾想过使用map,但是map总是会返回与其调用的数组长度相同的数组。

我也考虑使用一个对象来存储和,但是如果没有嵌套2个for循环,我将无法做到这一点。

const arr1 = [1, 2];
const arr2 = [0, 3, 5];

const sum = [];

for (let x of arr1) {
  for (let y of arr2) {
    sum.push(x + y);
  }
}
// Expected output: [ 1, 4, 6, 2, 5, 7 ]

预期的解决方案应优于O(n ^ 2)。

我猜您可以创建一个列表列表,每个内部列表都是将您的一个输入列表映射到一个附加列表的结果,其中一个元素来自另一个列表。

const sums = [];

for (let x of arr1) {
  sums.push(arr2.map(function (y) { return y + x }))
}

然后,您将得到一个包含n个完整结果数组的数组。 sums[i][j]访问它们。

这并不会降低复杂性(仍然是On × m ),并且我敢肯定这是不可避免的),但是它将某些计算从JS代码移到了map实现中,这可能更有效(在浏览器的JS实现等)。

如果arr1小于arr2 ,这将更有效,因此您可以在应用此想法之前考虑将其交换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM