Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么控制台告诉我。过滤器不是一个函数?_Javascript - Fatal编程技术网

Javascript 为什么控制台告诉我。过滤器不是一个函数?

Javascript 为什么控制台告诉我。过滤器不是一个函数?,javascript,Javascript,当我运行这个函数时,它会说str.filter不是一个函数。因为filter是一个数组函数(array.prototype.filter),而您在字符串上调用它str.split返回一个数组,不会对str进行任何更改。像调用console.log(str.split(“”).fil)一样调用它。应该可以。字符串对象没有筛选器方法,字符串是不可变的。 因此,实际上,str.split(“”)不会更改字符串的值,而是返回一个新字符串,您没有在变量中捕获该字符串 试试看 因为您在str上调用“filt

当我运行这个函数时,它会说str.filter不是一个函数。

因为
filter
是一个数组函数(
array.prototype.filter
),而您在字符串上调用它
str.split
返回一个数组,不会对
str
进行任何更改。像调用console.log(str.split(“”).fil)一样调用它。应该可以。

字符串对象没有筛选器方法,字符串是不可变的。 因此,实际上,
str.split(“”)
不会更改字符串的值,而是返回一个新字符串,您没有在变量中捕获该字符串

试试看


因为您在str上调用“filter”的执行,str是一个没有函数“filter”的对象,也没有原型。由于筛选器不存在,因此属性的值未定义,无法调用,因为其类型不是函数。

因为字符串没有
filter
方法。请尝试:
console.log([…str].fil.join`)
var str = "I am a string.";

console.log(str.split(''));

var fil = function(val){
return val !== "a";
};

console.log(str.filter(fil));
console.log(str.split('').filter(fil));