array.some 和其他不在 nodejs 中工作的人

array.some and others not working in nodejs

在我的 linux OS 上,我试图编写 javascript 代码,但某些数组函数会引发

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]

所以这个问题似乎与节点有关,因为某些功能像地图一样工作 如果能帮我修复我的 nodejs,我将不胜感激。

.some() 也不行不知道还有没有其他的

已解决:愚蠢的我非常确定他知道如何使用我的错误功能,非常感谢

every 函数有一个必需的参数。

参数应该是一个函数,它将 运行 数组中的每个元素。

有关它的更多信息,请阅读 here

您没有传递在数组遍历期间执行的应该 return 布尔结果的函数。

来自手册(仔细阅读并查看 粗体字):

The every() method tests whether all elements in the array pass the test implemented by the provided function.

这是正确用法的示例:

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);

P.S。 every 是 shorthand 到 find 的方法。区别在于 find 找到第一次出现,停止迭代和 returns 有效元素。但是 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);