在JavaScript中,您可以使用两种常见的方法来找到数组中两个值的和等于给定的值。
方法一:使用双重循环
function findSum(arr, target) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] === target) {
return [arr[i], arr[j]];
}
}
}
return [];
}
const arr = [2, 4, 6, 8];
const target = 10;
const result = findSum(arr, target);
console.log(result); // [2, 8]
这段代码是一个函数
findSum
,它接受一个数组arr
和一个目标值target
作为参数。函数的目标是在数组中找到两个值的和等于目标值的元素,并返回这两个元素组成的数组。函数使用了两个嵌套的循环来遍历数组。外层循环从数组的第一个元素开始,内层循环从外层循环的下一个元素开始。通过遍历数组中的每一对元素,函数判断它们的和是否等于目标值。如果找到了符合条件的一对元素,函数立即返回这两个元素组成的数组。
如果遍历完整个数组都没有找到符合条件的元素对,函数返回一个空数组
[]
。在代码的最后,我们定义了一个数组
arr
和一个目标值target
,然后调用findSum
函数,并将结果赋值给变量result
。最后,我们使用console.log
打印出结果[2, 8]
。这段代码的时间复杂度为O(n^2),因为它使用了两个嵌套的循环来遍历数组。如果数组很大,性能可能会受到影响。如果需要更高效的解决方案,可以考虑使用哈希表来优化算法。
方法二:使用哈希表
function findSum(arr, target) {
const map = new Map();
for (let i = 0; i < arr.length; i++) {
const complement = target - arr[i];
if (map.has(complement)) {
return [complement, arr[i]];
}
map.set(arr[i], i);
}
return [];
}
const arr = [2, 4, 6, 8];
const target = 10;
const result = findSum(arr, target);
console.log(result); // [2, 8]
方法一使用了双重循环,时间复杂度为O(n^2)。方法二使用了哈希表,时间复杂度为O(n)。如果数组很大,方法二的性能会更好。
工具大全:https://aiburgeon.com/siteCollection/