Всем привет. Я сравниваю этот элемент массива со следующим и если сравнение дает true, то пушу значение в аккумулирующую переменную. Я понимаю, что когда-то будет сравнение последнего элемента массива с элементом массива + 1, где будет значение undefined. Вроде я это отфильтровал, но все равно не работает. Если вместо reduce использовать forEach и внешнюю аккумулирующий массив, то все работает. Подскажите как правильно это написать используя reduce() и в чем ошибка.
Этот кода не работает:
var uniqueInOrder = function (iterable) {
return iterable.reduce((acc, item, index) => {
if (item != iterable[index + 1]) {
acc.push(item);
return acc;
}
}, []);
};
console.log(uniqueInOrder([1, 1, 2, 3, 3, 3, 4]));
Этот код работает:
var uniqueInOrder = function (iterable) {
let result = [];
iterable.forEach((item, index) => {
if (item != iterable[index + 1]) {
result.push(item);
}
});
return result;
};
console.log(uniqueInOrder([1, 1, 2, 3, 3, 3, 4]));