Javascript 查找出现奇数次的项目
我试图解决一个关于代码战的问题,这个问题涉及到找到一个数组中出现奇数次的项。我的解决方案通过了3次测试,但其他3次测试失败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
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