var str = "I am a string.";
console.log(str.split(''));
var fil = function(val){
return val !== "a";
};
console.log(str.filter(fil));
当我运行它时,它表示str.filter不是函数。
答案 0 :(得分:20)
因为filter
是一个数组函数(Array.prototype.filter
),所以当你在一个字符串上调用它时。 str.split
返回一个数组,不会更改str
的任何内容。称之为console.log(str.split('').filter(fil))
,它应该没问题。
答案 1 :(得分:5)
因为你在str上调用了“filter”的执行,str是一个没有自己称为“过滤器”的函数的对象,也不是原型。由于过滤器不存在,属性的值是未定义的,因为它的类型不是函数而无法调用。
答案 2 :(得分:2)
String对象没有filter方法,String是不可变的。
因此实际上str.split('')
不会更改字符串的值,但会返回一个新的String,而您没有在变量中捕获它。
尝试,
console.log(str.split('').filter(fil));