array.some и другие, не работающие в nodejs - PullRequest
0 голосов
/ 28 октября 2018

В моей ОС Linux я пытался написать код javascript, но некоторые функции Array вызывали

console.log([false].every())
                    ^
TypeError: undefined is not a function

Я впервые заметил это при работе над проектом Vuejs (cli).Но затем я протестировал простой скрипт .js и запустил его с:

node test.js

кодом:

console.log('testing')
console.log([])
console.log([false].every)
console.log([false].every())

все работает, пока я не вызову функцию в строке 4. При регистрации функциив строке 3 он записывает

[Function: every]

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

.some() также не работает, я не знаю, есть ли другие

решено: глупый я был настолько уверен, что он знал, как использовать эту функцию, мой плохой, большое спасибо

Ответы [ 2 ]

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

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

Из руководства (внимательно прочитайте и посмотрите жирные слова ):

Метод every () проверяет, все ли элементы массива проходят тест, реализованный предоставленной функцией .

И это пример правильного использования:

let isValidArrayOfIntegers;

isValidArrayOfIntegers = 
  [1, 2, 3, 5.3, 0.1, false, true, NaN, undefined]
    .every(function(item) {
      return Number.isInteger(item);
    });
    
console.log(isValidArrayOfIntegers);


isValidArrayOfIntegers = 
  [1, 2, 3]
    .every(function(item) {
      return Number.isInteger(item);
    });
    
console.log(isValidArrayOfIntegers);

PS every - сокращение от find метода.Разница в том, что find находит первое вхождение, останавливает итерацию и возвращает действительный элемент.Но every находит первое недопустимое вхождение и останавливает итерацию с логическим результатом.

let isValidArrayOfIntegers;

isValidArrayOfIntegers = 
      ![1, 2, 3, 0.1, 5.3, false, true]
        .find(function(item) {
          let isInteger = Number.isInteger(item);
          if (!isInteger) console.log(item, 'is not integer, breaking loop');
          return !isInteger;
        });
        
console.log(isValidArrayOfIntegers);

isValidArrayOfIntegers = 
      ![1, 2, 3]
        .find(function(item) {
          return !Number.isInteger(item);
        });
        
console.log(isValidArrayOfIntegers);
0 голосов
/ 28 октября 2018

Функция every имеет один обязательный параметр.

Параметр должен быть функцией, которая будет запускаться для каждого элемента в массиве.

Для получения дополнительной информации об этом прочитайте здесь

...