Вы не покрываете все случаи.
if (arr[i] < 10) {
tips[i] = arr[i] * 0.6;
} else if (arr[i] > 10 && arr[i] < 20) {
tips[i] = arr[i] * 0.5;
} else if (arr[i] > 30) {
tips[i] = arr[i] * 0.2;
}
Что, если предмет точно 10
?Что, если предмет находится между 20
и 30
?Это не будет отражено ни в одном из операторов if, которые вы здесь написали, поэтому, вероятно, вам не хватает некоторых элементов в возвращаемом массиве.
Чтобы увидеть, какой из них вы могли бы написать это:
if (arr[i] < 10) {
tips[i] = arr[i] * 0.6;
} else if (arr[i] > 10 && arr[i] < 20) {
tips[i] = arr[i] * 0.5;
} else if (arr[i] > 30) {
tips[i] = arr[i] * 0.2;
} else {
console.log('Oops! Unhandled case!', arr[i]);
}