Array.prototype.remove = function(e) {var i = this.inArray(e);if(i != -1) this.splice(i, 1);return this;};
Array.prototype.add = function(e) {this.push(e); return e;};
Array.prototype.inArray = function(v) {for(i in this) if(v==this[i])return i;return false;};
Array.prototype.toggle = function(v) {this.inArray(v) ? this.remove(v) : this.add(v);return this;};
所以当我试着这个......
var arr = [1,2,3,4,5];
for(i in arr)
document.write(arr[i]);
此打印数组值和函数已扩展。有人可以帮帮我吗?我无法更改代码“for(x in y)”,因为在很多文件中很多次。
答案 0 :(得分:2)
要阅读的一些事情将解释这种情况
https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
迭代数组时使用.forEach()。它得到了很好的支持,包括Mobile Safari和Android, https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach
答案 1 :(得分:1)
如果您必须修改Array
原型,则必须使用hasOwnProperty()
,否则它将获取原型链中的属性。
var arr = [1,2,3,4,5];
for(var i in arr) {
if (arr.hasOwnProperty(i)) {
document.write(arr[i])
}
}
但是,您说,您不想更改for (in)
循环。为什么你没有Array实用程序对象?或者只使用普通的for
循环?这些是Array
对吗? for (in)
用于迭代Object
属性。
答案 2 :(得分:0)
for ... in
在JavaScript中循环对象属性,而不是数组元素。 for ... in
循环只是错误的方法。您已经说过无法更改它们,但是由于您刚刚发现的原因,使用此语法枚举数组的内容并不是JavaScript中推荐的做法。
您迟早要重写for ... in
循环。
答案 3 :(得分:0)
遍历数组的索引.-
var A=[1,2,3,4,5];
Array.peototype.omega=function(replacer){
var L= this.length;
if(L)--L;
if(replacer!=undefined)this[L]=replacer;
return this[L]
}
for(var i=0,L=A.length; i<L; i++){
//do something to A[i]
}