如何使用javascript获取与sum匹配的元素值?

如何使用javascript获取与sum匹配的元素值?,javascript,arrays,Javascript,Arrays,有两个数组,和为9 它只会返回真或假 i、 e: 数组1[1,2,4,9]和=9返回false array2[1,2,4,5]和=9返回真值 数组中需要两个数字来匹配和 我在JS中尝试的内容: 函数hasPairWithSum(arr,sum){ var len=阵列长度; 对于(var i=0;i来说,一个快速的解决方案是 函数twoSum(arr,S){ var hashTable={}; //检查数组中的每个元素 对于(变量i=0;iarr.some((m,x)=>n+m==sum&&

有两个数组,和为9

它只会返回真或假

i、 e:

数组1[1,2,4,9]和=9返回false

array2[1,2,4,5]和=9返回真值

数组中需要两个数字来匹配和

我在JS中尝试的内容:

函数hasPairWithSum(arr,sum){
var len=阵列长度;

对于(var i=0;i来说,一个快速的解决方案是

函数twoSum(arr,S){
var hashTable={};
//检查数组中的每个元素
对于(变量i=0;i
函数包含sum(arr,sum){
返回arr.some((n,i)=>arr.some((m,x)=>n+m==sum&&i!=x))
}
log(ContainsSum([1,2,4,9,9]);

console.log(ContainsSum([1,2,4,5,9]);
这里有一种不同的方法,使用生成器函数和递归来生成对,
包括
函数,该函数接受迭代器和谓词,并从生成器中提取项,根据谓词测试它们:

函数*getPairs(arr){
如果(!arr.length)返回false;
常数[h,…尾]=arr;
对于(让v为尾翼){
log(`[${h},${v}]`);
产率[h,v];
}
收益率*getPairs(尾部);
}
函数包括(迭代器、谓词){
让result=iterator.next();
而(!result.done){
if(谓词(…result.value)){
返回true;
}
结果=迭代器.next();
}
返回false;
}
常数sumEquals=sum=>(a,b)=>a+b==sum;
常数pairEquals=([a,b])=>(i,j)=>a==i&&b==j;
log(包括(getPairs([2,4,9]),sumEquals(9));
log(包括(getPairs([2,4,5]),sumEquals(6));

console.log(包括(getPairs([2,4,5])、pairEquals([2,5]);
您的解决方案有什么问题吗?可能重复