[英]Element-Wise Arithmetic Operations in Jagged Multidimensional Arrays in JavaScript
[英]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]
访问它们。
这并不会降低复杂性(仍然是O ( n × m ),并且我敢肯定这是不可避免的),但是它将某些计算从JS代码移到了map
实现中,这可能更有效(在浏览器的JS实现等)。
如果arr1
小于arr2
,这将更有效,因此您可以在应用此想法之前考虑将其交换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.