← Назад к вопросам

Есть ли у массива метод replace?

1.0 Junior🔥 201 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Нет, у массива нет встроенного метода replace()

Уточнение: В JavaScript стандартные массивы не имеют метода replace(). Этот метод существует только для строк, а не для массивов. Это частая ошибка при переходе между работой со строками и массивами.

Почему нет метода replace() у массива?

В спецификации ECMAScript массивы наследуют методы из Array.prototype, где методы полностью переделаны для работы с индексами и элементами. Метод replace() - это строковый метод, заточенный именно на работу с символами, подстроками и регулярными выражениями.

Как заменить элемент в массиве?

Если тебе нужно заменить элементы массива, вот основные способы:

1. Прямое присваивание по индексу:

const arr = [1, 2, 3, 4, 5];
arr[2] = 99;  // Заменяем элемент с индексом 2
console.log(arr);  // [1, 2, 99, 4, 5]

2. Метод map() для создания нового массива:

const arr = [1, 2, 3, 4, 5];
const newArr = arr.map((item, index) => {
  return index === 2 ? 99 : item;
});
console.log(newArr);  // [1, 2, 99, 4, 5]

3. Метод splice() для изменения оригинального массива:

const arr = [1, 2, 3, 4, 5];
arr.splice(2, 1, 99);  // Удаляем 1 элемент с индекса 2 и вставляем 99
console.log(arr);  // [1, 2, 99, 4, 5]

4. Замена по значению (например, найти и заменить):

const arr = [apple, banana, apple, cherry];
const newArr = arr.map(item => item === apple ? orange : item);
console.log(newArr);  // [orange, banana, orange, cherry]

5. Использование findIndex() и splice():

const arr = [1, 2, 3, 4, 5];
const index = arr.findIndex(item => item === 3);
if (index !== -1) {
  arr.splice(index, 1, 99);
}
console.log(arr);  // [1, 2, 99, 4, 5]

Разница: replace() для строк

Строки имеют метод replace(), потому что они неизменяемы (immutable):

const str = "hello world";
const newStr = str.replace("world", "there");
console.log(newStr);  // "hello there"

// replace() возвращает новую строку
const str2 = "apple apple apple";
const replaced = str2.replace(/apple/g, "orange");  // С регулярным выражением
console.log(replaced);  // "orange orange orange"

Выводы

  • Массивы не имеют replace() - это строковый метод
  • Используй map() для создания нового массива с заменёнными элементами (функциональный подход, лучше для реактивности)
  • Используй прямое присваивание или splice(), если нужно изменить существующий массив (мутирующий подход)
  • Выбирай между мутирующим и функциональным подходом в зависимости от задачи и стиля кода