Решаю замечательную задачу на перебор массивов и объектов.Столкнулся с проблемой, при использовании разных вариантов нахождения ключа по его значению в объекте выдаёт undefined.Не могу понять в чём дело.
Код ниже:
function findOdd(A) {
let result = {};
A.forEach(function(item){
if (result[item] != undefined)
++result[item];
else
result[item] = 1;
});
if (Object.keys(result).length<2) { // по условию задачи, если значение единственное, то возвращаем его.
return(Object.keys(result));
} else {
res = Object.values(result).filter((item)=>item%2 !==0); //
function getKeyByValue(object, value) {
Key = Object.keys(object).find(key => object[key] === value);
return Key;
}
console.log(result); //для наглядности вывести obj
console.log(getKeyByValue(result, res));
}
}
Arr = [1,2,2,3,3,3,4,3,3,3,2,2,1];
findOdd(Arr);
Так же сам текст задачи:
Given an array of integers, find the one that appears an odd number of times.
There will always be only one integer that appears an odd number of times.
Examples
[7] should return 7, because it occurs 1 time (which is odd).
[0] should return 0, because it occurs 1 time (which is odd).
[1,1,2] should return 2, because it occurs 1 time (which is odd).
[0,1,0,1,0] should return 0, because it occurs 3 times (which is odd).
[1,2,2,3,3,3,4,3,3,3,2,2,1] should return 4, because it appears 1 time (which is odd).
По хорошему всё должно работать, если функция будет возвращать исправно ключ.Видимо, где-то ошибка.