#javascript #arrays
Вопрос:
function findOdd(A) {
var count = 0;
for (var i = 0; i < A.length; i ){
for( let j = 0; j < A.length; j ){
if(A[i]=== A[j]){
count = count 1;
}
if(count % 2 ===0){
count = 0;
}else{
var n = A[i];
}
}
}
return n
}
Это мой код, для которого я использовал вложенность, и результат всегда является последним элементом массива, почему?
Комментарии:
1. Как вы вызываете функцию?
2. @otejiri-это упражнение для кодирования, имя функции-findOdd.
Ответ №1:
На вашей последней итерации, i = A.length
, и j = A.length
. Затем вы проверяете , так ли A[i] === A[j]
это. Вы установили count = count 1
, так оно и будет 1
(почти всегда, так как есть только один нечетный, и в любое время вы устанавливаете четный счет count = 0
). 1 % 2 !== 0
таким образом, вы фактически (почти) всегда будете настроены n
на A[A.length -1]
const findOdd = (arr) => {
for (let i = 0; i < arr.length; i ) {
// arr[i] is the first instance, so set count to 1
let count = 1;
// start checking at the next element
for (let j = i 1; j < arr.length; j ) {
// if they are the same, increment count
if (arr[i] === arr[j]) {
count ;
// remove the current element, so we don't
// check it again using i
arr.splice(j, 1);
// go back, since we need to re-check this index since
// we just removed the item that was at this index
j--;
}
}
// if it's odd, return now
if (count % 2 !== 0) return arr[i];
}
}
console.log(findOdd(['a','a','b','b','c','d','d']))