Мы перекладываем элементы из Items в Newitems, при условии, что они прежде не встречались (done = false). Чтобы заполнить требуемую табличку нужно знать содержимое Items, потому что оно может быть и [1, 1, 1, 1], тогда в результате получим NewItems = [1], а может и [1, 2, 3, 4], тогда он будет перенесен целиком.
И таки да, если я правильно понимаю псевдокод, то ошибок в нем нет.