Как изменить элементы массива по условию?
Имеется примерно такой массив:
let arr = [1000, 2005, 600, 4000, 5000];
Задача состоит в том, что нужно изменить определенные значения в массиве по условию, то есть, например если какой-либо элемент массива равен 1000, тогда заменяем его значение на "1К +" и так далее.
Казалось бы задача простая, но попытка решить её подобным образом:
let arr = [1000, 2005, 600, 4000, 5000];
let newArray = [];
arr.forEach(n => {
switch (true) {
case n > 999:
n = "1К +";
case n > 2000:
n = "2К +";
case n > 4000:
n = "4К +";
case n > 5000:
n = "5К +";
}
newArray.push(n);
});
console.log(newArray);
Приводит к такому результату:
["5К +", "5К +", 600, "5К +", "5К +"]
То есть, первое и второе условие игнорируется, и выполняется последнее. Получается что элементы массива, значения которых выше 999, получают обновленные значения, равные = 5000(5К+), но это неправильно, так как например 1000 должен быть обновлен следующим значением = 1К +.
Нужный результат должен выглядеть вот так:
["1К +", "2К +", 600, "4К +", "5К +"]
Попытка добавлять break в case, не даёт никаких положительных результатов. Условий может быть много, поэтому был выбрал switch вместо if else для сохранения читаемости кода. Но даже если пожертвовать читаемостью кода и попытаться переписать на if else if else, или if(), if(), if() то всё равно никакого нужного результата не будет.
Есть какой-нибудь способ это решить?
Ответы (1 шт):
let arr = [1000, 2005, 600, 4000, 5000];
let newArray = arr.map((el) => {
const result = Math.floor(el / 1000);
return result < 1 ? el : `${result}K +`;
});
console.log(newArray);