Какой-то странный у вас код, логика сильно хромает. Зачем перебирать массив карт, и искать номер карты, если этот номер уже ввели? Вместо того чтобы положить деньги на счёт, вы перезаписываете его значение на то, что ввел юзер:
cash[i] =Number( prompt('Сколько положить?'))
А когда уже перезаписали, только потом валидируете введенное значение:
if(cash[i]>-1001 && cash[i]<=1001)
Это вас на курсах каких-то такому учат, или что?
Наверно, это должно выглядеть так:
let card =[0,1,2,3,4,5,6,7,8,9];
let cash = [0,0,0,0,0,0,0,0,0,0,0];
let sum=0;
let number = Number(prompt('Какая карта?'));
while (number < 0 || number > 9){
number = Number( prompt('Какая карта?'));
}
let value = Number(prompt('Сколько положить?'));
while (value < -1000 || value > 1000){
value = Number(prompt('Сколько положить?'));
}
cash[number] += value;
for (let i=0; i < cash.length; i++){
sum += cash[i];
}
alert(`Сумма по картам: ${sum}`);