array.some和其他不能在Node.js中工作

时间:2018-10-28 09:18:33

标签: javascript node.js linux manjaro

在我的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一样工作 我很乐意提供有关如何修复Node.js的帮助。

.some()也不起作用,我不知道是否还有其他人

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

2 个答案:

答案 0 :(得分:1)

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

该参数应该是将在数组中的每个元素上运行的函数。

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

答案 1 :(得分:0)

您尚未传递在数组遍历期间执行的应返回布尔结果的函数。

从手册中(请仔细阅读并参阅粗体):

  

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

P.S。 everyfind方法的简写。区别在于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);