如何比较两个数组,然后返回数组中发生变化的元素之前的所有元素的和



我有两个数组,我需要检查它们之间的差异,并返回数组中所有元素在改变的元素(包括他)之前的和。

我目前有两个区域高度数组,当输入的值改变时,它们会被更新。也可以修改数组的两个或两个以上的元素,然后需要对所有修改过的元素和最后修改的元素之前的所有元素求和。

例如数组:

let oldArea = [3, 4, 2]

let newArea = [3, 6, 2]

我尝试了这样的东西(它部分完成了它的工作,但数组长度可以是5个或更多元素,所以这个解决方案是坏的):

let oldArea = [3, 4, 2]
let newArea = [3, 6, 2]
let changedArea = [];
if (
oldArea[0] !== newArea[0] &&
oldArea[1] === newArea[1]
) {
changedArea.push(newArea[0]);
} else if (
oldArea[1] !== newArea[1] &&
oldArea[0] === newArea[0] &&
oldArea[2] === newArea[2]
) {
changedArea.push(newArea[0] + newArea[1]);
} else changedArea.push(newArea.reduce((a, b) => a + b, 0));
let changedAreaHeight = changedArea.reduce((a, b) => a + b, 0);
console.log(changedAreaHeight)

如果您有任何其他解决方案的建议,我将不胜感激。

当元素不相同时,可以使用简单的for循环和break

let oldArea = [3, 4, 2]
let newArea = [3, 6, 2]
let final = 0;
for (let i = 0; i < newArea.length; i++) {
if (newArea[i] === oldArea[i]) {
final += newArea[i]
} else {
final += newArea[i]
break;
}
}
console.log(final)

最新更新