filter Creates a new array with all elements that pass
the test implemented by the provided function.
>>> 'abc'.filter(function(e){return e!='b'})
TypeError: "abc".filter is not a function
>>> Array.prototype.filter.call('abc', function(e){return e!='b'})
["a", "c"]
>>> jQuery.isArray('abc')
false
答案 0 :(得分:4)
所有数组方法都是通用的;即,它们处理具有数字属性和length
属性的任何对象。例如,请参阅the specification for Array.prototype.filter
:请注意,该算法完全用
让
lenValue
成为使用参数[[Get]]
调用O
"length"
内部方法的结果。
或
让
kPresent
成为使用参数[[HasProperty]]
调用O
Pk
内部方法的结果。
Array.filter
是a Firefox-specific extension,BTW。跨浏览器版本为Array.prototype.filter.call
。
答案 1 :(得分:1)
您可以这样做,因为Array.filter
1 被定义为通用的;例如,你可以在NodeList
上调用它。这对开发人员来说只是一种便利。它也适用于字符串,因为在现代浏览器中(IE 8及更早版本之外的所有内容),您可以像访问数组的索引一样访问字符串中的字符,这就是filter
所基于的内容,以及{{ 1}}:
length
但是,如果您计划支持Internet Explorer 8或更早版本,我建议不要使用此功能,因为ES5 shivs可能无法检测到上下文是字符串的事实,这会破坏事物。< / p>
1 以及所有其他var str = "Hello, world!";
str[2] // 'l'
方法。除了,再一次,在Internet Explorer 8及更早版本上。