Вы можете просто протестировать фактический индекс для исключения большего количества того же значения
if (arr.indexOf(arr[i]) === i) {
// ^
Кстати, вы можете переместить объявление newArr
внутри функции.
var arr = [3, 9, 10, 23, 100, 100, 23, 4, 10, 13, 13],
funcFilter = function(arr, a, b) {
var newArr = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] >= a && arr[i] <= b) {
if (arr.indexOf(arr[i]) === i) { // take only the first found item
newArr.push(arr[i]);
}
}
}
return newArr;
};
console.log(funcFilter(arr, 3, 20))