Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 查找出现奇数次的项目_Javascript_Arrays_For Loop - Fatal编程技术网

Javascript 查找出现奇数次的项目

Javascript 查找出现奇数次的项目,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我试图解决一个关于代码战的问题,这个问题涉及到找到一个数组中出现奇数次的项。我的解决方案通过了3次测试,但其他3次测试失败 function findOdd(A) { //happy coding! let odd = ""; let count = 0; for (let i = 0; i < A.length; i++){ for (let j = 0; j < A.length; j++){ if (A[i] === A

我试图解决一个关于代码战的问题,这个问题涉及到找到一个数组中出现奇数次的项。我的解决方案通过了3次测试,但其他3次测试失败

function findOdd(A) {
  //happy coding!
  let odd = "";
  let count = 0;
  for (let i = 0; i < A.length; i++){
     for (let j = 0; j < A.length; j++){
      if (A[i] === A[j] ){
        count++;
        }
       if (count %2 != 0){
         odd = A[i];
       }
    } 
  }
  return odd;
}
这些是通过的测试用例

A4 =  [ 20, 1, -1, 2, -2, 3, 3, 5, 5, 1, 2, 4, 20, 4, -1, -2, 5 ]

n4 =  5

A5 =  [ 20, 1, 1, 2, 2, 3, 3, 5, 5, 4, 20, 4, 5 ]

n5 =  5

A6 =  [ 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1 ]

n6 =  10

其中A1-A6为输入数组,n1-n6为预期结果,使用
Array.prototype.reduce
,您可以生成一个包含每个元素重复计数的新对象

基于该对象,可以找到数组中具有奇数重复项的元素

函数findOdd(A){
常数countArr=A.reduce((acc,cur)=>{
acc[cur]?acc[cur]++:acc[cur]=1;
返回acc;
}, {});
常量奇数=Object.keys(countArr).find((key)=>countArr[key]%2);
返回+奇数;
}
log('n1=',findOdd([1,1,2,-2,5,2,4,4,-1,-2,5]);
log('n2=',findOdd([1,1,1,1,1,1,1,10,1,1,1,1,1]);
log('n3=',findOdd([5,4,3,2,1,5,4,3,2,10]);
log('n4=',findOdd([20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5]);
log('n5=',findOdd([20,1,1,2,2,3,3,5,5,4,20,4,5]);

log('n6=',findOdd([1,1,1,1,1,1,1,10,1,1,1,1,1])将if条件计数%2移出second for循环,并将其置于second for loopMake对象的下方,计算出现次数,找到奇数。此外,初始化计数=0;以上是第二个for循环,我假设您也可以在找到奇数后中断。如果您的函数找不到奇数,它将返回一个空字符串。这可能并不理想。你的算法经过修正后,效率也很低。@nice\u dev你的两个建议对我都有效。谢谢
A4 =  [ 20, 1, -1, 2, -2, 3, 3, 5, 5, 1, 2, 4, 20, 4, -1, -2, 5 ]

n4 =  5

A5 =  [ 20, 1, 1, 2, 2, 3, 3, 5, 5, 4, 20, 4, 5 ]

n5 =  5

A6 =  [ 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1 ]

n6 =  10