Предупреждение Eslint (no-unused-vars) при использовании карты и назначении элемента новому значению - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть массив логических значений. Что-то вроде:

let array = [true, false, true, false];

Я хотел бы отобразить массив и установить все в true или все в false следующим образом:

array = array.map(e => (e = true))

ИЛИ

array = array.map(e => (e = false))

Это работает, но выдает предупреждение eslint 'e' is assigned a value but never used.eslint(no-unused-vars). Кто-нибудь знает, почему это будет? Похоже, что e используется. Я могу избавиться от предупреждения, бросив троичную, но мне это действительно не нужно:

array.map(e => (e ? true : true))

Также это работает и удаляет предупреждение:

this.expanded = this.expanded.map(e => {
  e = true;
  return e;
});

Я быгораздо лучше просто использовать один лайнер выше, как они работают и кажутся действительными.

1 Ответ

2 голосов
/ 01 ноября 2019

Если вы хотите установить их все на true или false, вам нужно просто

array = array.map(() => true);

или

array = array.map(() => false);

В качестве альтернативы:

array.fill(true); // or false

Назначение параметра не повлияет на элементы массива. Параметр, передаваемый в обратный вызов .map(), является копией элемента массива, а не какой-либо ссылкой на него (что в принципе невозможно в JavaScript). Вы могли бы воспользоваться тем, что обратный вызов также прошел индекс, но если вы ищете краткость, которая кажется контрпродуктивной.

Ошибка ESLint говорит вам, чтоприсвоение e = true бессмысленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...