在我的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()也不起作用,我不知道是否还有其他人
解决:愚蠢的我很确定他知道如何使用该功能,非常感谢
答案 0 :(得分:1)
答案 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。 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);