gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:03 26 4
gpt4 key购买 nike

我需要对 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,这将更有效,因此您可以考虑在应用此想法之前交换它们。

关于javascript - 有没有更好的方法对 2 个数组进行元素操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com