Требуется ли проверка длины массива перед отображением в javascript? - PullRequest
0 голосов
/ 12 октября 2018

Итак, у меня есть этот код, написанный на ES6

 let documents = somedata;
      if (documents.length >= 0) {
          documents.map( (item, index) => {
              state[item.type].push(item);
          });
          this.setState({documents: state});
      }

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

Как, например, есть ли случаи, когда проверка длины не будет плохой?

Если бы переменная не была массивом, она бы потерпела неудачу, но есть ли случаи, кроме которых я должен волноваться?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

нет, [] .map (item => item) просто вернет [], так что все в порядке, если длина равна 0.

, если вы просто проверяете, является ли ваша переменная массивом, который вы можетеобратитесь к этому вопросу: Как проверить, является ли переменная массивом в JavaScript?

, что также может привести к ошибке по любой из следующих причин

  • один из ваших элементов массива не был объектом со свойством type
  • у вашего объекта состояния не было ключа, соответствующего значению item.type
  • , если состояние [item.type] значение не было массивом (следовательно, нет метода push)

также, если вы не используете результат карты, не используйте map, используйте Array.Foreach () .

0 голосов
/ 12 октября 2018

Хорошо.На самом деле, вы должны проверить, есть ли у документов свойство length в цепочке прототипов.Если этого не произойдет, и вы попытаетесь использовать карту в нем, он выдаст одну ошибку.

Когда вы гарантируете, что у вас есть длина (является итеративной), длина может быть нулевой, нет проблем.Он ничего не будет повторять, потому что у вас нет элементов.Поэтому вернет один пустой массив.

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