Невозможно изменить значения логического массива с помощью forEach в TypeScript

Я понял, что когда я пытаюсь изменить значения логического массива с помощью функций forEach или map, значения не меняются. Мне нужно построить цикл for и изменить элементы по индексу. Я хочу знать, почему это так?

Где твой код?

Robby Cornelissen 24.05.2019 12:44
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
1
1 371
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, у вас неправильное представление о том, как работают forEach() и map().

forEach()

forEach() вызывает метод обратного вызова для каждого элемента в массиве, но сам по себе не изменяет массив. Чтобы фактически изменить массив с помощью forEach(), вам нужно будет использовать индекс в вашей функции обратного вызова:

const array = [true, true];

array.forEach((v, i, a) => a[i] = !v);

console.info(array); // [false, false]

map()

Подобно forEach(), map() не изменяет массив, к которому он вызывается. Он применяет функцию обратного вызова к каждому элементу массива и возвращает массив новый, содержащий преобразованные элементы. Это означает, что вам нужно присвоить результат операции map() переменной:

const array = [true, true];

const result = array.map(v => !v);

console.info(result); // [false, false]

Спасибо за знания. Я помню изменение элементов массива для других типов объектов. Это связано с изменчивостью?

oksuzlerOmer 24.05.2019 13:03

да. Вы можете изменить свойства объектов в массиве, но если вы хотите заменить их новым объектом, вам придется использовать описанный выше подход.

Robby Cornelissen 24.05.2019 13:07

Другие вопросы по теме