-2

在我的 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]

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

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

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

4

2 回答 2

1

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

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

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

于 2018-10-28T09:21:19.787 回答
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);

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

于 2018-10-28T09:41:23.987 回答