Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果数组中任意元素的和等于给定值,则检查数组 [1,2,3,6],3=True_Javascript_Arrays - Fatal编程技术网

Javascript 如果数组中任意元素的和等于给定值,则检查数组 [1,2,3,6],3=True

Javascript 如果数组中任意元素的和等于给定值,则检查数组 [1,2,3,6],3=True,javascript,arrays,Javascript,Arrays,您可以使用函数some检查至少一个操作是否为True 这种方法遵循您的用例 let check=(sum,arr)=>arr.concat(arr[0])。一些((n,i,a)=>(n+a[i+1])==sum); 控制台日志(检查(3[1,2,3,6]); 控制台日志(检查(9[1,2,3,6]); 控制台日志(检查(5[1,2,3,6]); 控制台日志(检查(10[1,2,3,6]); 控制台日志(检查(10[6,2,3,1]); 控制台日志(检查(6[6,3,3,1]); 控制台日志(检查

您可以使用函数
some
检查至少一个操作是否为
True

这种方法遵循您的用例
let check=(sum,arr)=>arr.concat(arr[0])。一些((n,i,a)=>(n+a[i+1])==sum);
控制台日志(检查(3[1,2,3,6]);
控制台日志(检查(9[1,2,3,6]);
控制台日志(检查(5[1,2,3,6]);
控制台日志(检查(10[1,2,3,6]);
控制台日志(检查(10[6,2,3,1]);
控制台日志(检查(6[6,3,3,1]);
控制台日志(检查(7[3,1,2,4]);
控制台日志(检查(7,[])

.as console wrapper{max height:100%!important;top:0;}
您必须遍历值数组。不熟悉javascript,以下是java函数中的代码:

[1,2,3,6], 3 = True <== 1+2=3
[1,2,3,6], 9 = True <== 3+6=9
[1,2,3,6], 5 = True <== 2+3=5
[1,2,3,6], 10 = False <== 1+2, 2+3, 3+6, 6+1 not equal to 10
[6,2,3,1], 10 = False <== 6+2, 2+3, 3+1, 1+6 not equal to 10
[6,3,3,1], 6 = True <== 3+3=6
公共布尔校验和(){
int-sumValue=10;//要检查的值可以作为参数传入
int-arr[4]={1,2,4,6};
对于(int n=0;n

希望这有帮助

这里有一种非常简单的方法,可以检查数组中的两个数字是否等于一个值。注意,这只允许不同的和(与自身相加的数字不计算)

功能测试(n,arr){
返回arr.some((项,i)=>arr.slice(i+1)。包括(n项))
}
设arr=[1,2,3,6]
log(test(5,arr))//true 2+3
log(test(4,arr))//真1+3
log(test(12,arr))//false,因为6+6不计算

console.log(test(10,arr))//false无和
检查(4[1,2,3,6])
返回false。可能我误解了,但它不应该是真的,因为1+3=4I读取:
如果给定的和等于数组中**任意**两个元素的和,函数需要返回true
给定的和:4等于两个元素的和[1,3]在数组中。你的问题是什么?你考虑过这个问题吗?你有没有研究过如何解决这个问题?你发现了什么?可能是
public boolean checkSum(){
  int sumValue = 10; //value you want to check, could be passed in as a parameter
  int arr[4] = {1,2,4,6};
  for (int n = 0; n < arr.length; n++){
    for (int x = 0; x < arr.length; x++){
      if ( (arr[n] + arr[x] == sumValue) && (n != x) ){ //need to ensure same slot is being added
        return true;
      }
    }
  }
  return false;
}