Невозможно изменить значения логического массива с помощью forEach в TypeScript - PullRequest
0 голосов
/ 24 мая 2019

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

1 Ответ

3 голосов
/ 24 мая 2019

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

forEach()

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

const array = [true, true];

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

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

map()

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

const array = [true, true];

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

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