js, fundamental
Не могу найти ошибку
let a = 'AAAABBBCCDAABBB';
let uniqueInOrder = function(iterable) {
let resultArray = [];
for(let i = 0; i < iterable.length; i++) {
if(i === 0) resultArray.push(iterable[0])
if(iterable[i] !== resultArray[i - 1]) {
console.log(resultArray, iterable[i - 1], resultArray[i - 1], resultArray[0]);
resultArray.push(iterable[i]);
}
}
return resultArray;
}
uniqueInOrder(a);
Результат вывода в консоль:
["A"] "A" undefined "A"
VM858:7 (2) ["A", "A"] "A" undefined "A"
VM858:7 (3) ["A", "A", "A"] "A" undefined "A"
VM858:7 (4) ["A", "A", "A", "B"] "B" undefined "A"
VM858:7 (5) ["A", "A", "A", "B", "B"] "B" undefined "A"
VM858:7 (6) ["A", "A", "A", "B", "B", "B"] "B" undefined "A"
VM858:7 (7) ["A", "A", "A", "B", "B", "B", "C"] "C" undefined "A"
VM858:7 (8) ["A", "A", "A", "B", "B", "B", "C", "C"] "C" undefined "A"
VM858:7 (9) ["A", "A", "A", "B", "B", "B", "C", "C", "D"] "D" undefined "A"
VM858:7 (10) ["A", "A", "A", "B", "B", "B", "C", "C", "D", "A"] "A" undefined "A"
VM858:7 (11) ["A", "A", "A", "B", "B", "B", "C", "C", "D", "A", "A"] "A" undefined "A"
VM858:7 (12) ["A", "A", "A", "B", "B", "B", "C", "C", "D", "A", "A", "B"] "B" undefined "A"
VM858:7 (13) ["A", "A", "A", "B", "B", "B", "C", "C", "D", "A", "A", "B", "B"] "B" undefined "A"
(14) ["A", "A", "A", "B", "B", "B", "C", "C", "D", "A", "A", "B", "B", "B"]
Почему результат вызова resultArray[i-1] - undefined на 2ой итерации цикла, при том что элемент массива с индексом 0 присутствует после 1ой итерации?
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Думаю вы так хотели?
let a = 'AAAABBBCCDAABBB';
let uniqueInOrder = function(iterable) {
let resultArray = [];
for(let i = 0; i < iterable.length; i++) {
if(i === 0) { resultArray.push(iterable[0]) }
else if(iterable[i] !== resultArray[resultArray.length - 1]) {
console.log(resultArray, iterable[i - 1], resultArray[resultArray.length - 1], resultArray[0]);
resultArray.push(iterable[i]);
}
}
return resultArray;
}
uniqueInOrder(a);
Дело в том что у вас длина resultArray не равна итерации