我一直在寻找一种将最大/最小函数添加到 JavaScript 的 Array 类的方法,这似乎是一个已解决的问题:JavaScript: min & max Array values? .但是,当我尝试使用它时,我的代码开始出现错误。事实证明,这种方法不适用于循环。
for(i in myArray) { console.log(i) }
prints out 1
2
3
max
min
我可以使用另一种方法吗?
最佳答案
公认的解决方案解决了您眼前的问题,但扩展核心对象通常是一个 bad idea .当您稍后包含一个使用 for..in
的库时会发生什么?或者当您在几个月后忘记并在代码的不同部分使用了错误的方法时?
另一种选择是包装和扩展。创建一个使用 Array
实例作为其原型(prototype)的新类型:
function ArrayThing() {}
ArrayThing.prototype = new Array();
现在你有一个对象,你可以在不影响 Array
的情况下扩展它:
ArrayThing.prototype.max = function() {
return Math.max.apply(null, [].slice.call(this, 0))
}
ArrayThing.prototype.min = function() {
return Math.min.apply(null, [].slice.call(this, 0))
}
var list = new ArrayThing();
// standard array methods still work
list.push(5);
list.push(22);
list.push(0);
list.push(-14);
list.length // => 4
// as do your new custom methods
list.max() // => 22
list.min() // => -14
这并非在所有情况下都有效,但除非您确定您真的、真的需要一个 Array
,否则这是一个有用的替代方法。
关于javascript - 将函数添加到 javascript 的 Array 类中断循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020954/