我正在编写一个函数来进行一些数据过滤。我写这个:
Array.prototype.keyFilter = function ()
{
var dta = this;
for ( i in dta )
{
console.log( dta[i] );
};
};
console.log( ['green','yellow','blue'].keyFilter('type') );
回报是:
green
yellow
blue
function ()
{
var dta = this;
for ( i in dta )
{
console.log( dta[i] );
};
}
undefined
好的,我得到了数组数据......加上函数本身和" undefined"。如何使用Array.prototype只获取数组数据
感谢您的帮助。
答案 0 :(得分:3)
您正在使用for...in
,它会迭代对象的可枚举属性,包括您已添加到原型中的函数。那是expressly not how you're meant to iterate over arrays。
如果要迭代数组,则应使用简单的for
循环,并从0
计算到length - 1
...
for (var i = 0; i < this.length; ++i) {
console.log(this[i]);
}
或者,使用forEach
:
this.forEach(function (i) {
console.log(i);
});
&#34; undefined&#34; part是你的外部console.log(...)
记录你的函数的返回值,即undefined
,因为你不会返回任何内容。