javascript - 将函数添加到 javascript 的 Array 类中断循环

标签 javascript arrays for-in-loop

我一直在寻找一种将最大/最小函数添加到 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/

相关文章:

javascript - 如何在 Node JS 中获取新行并将其作为 JSON 传递并将其保存在文本文件中

javascript - onclick提交按钮: Uncaught TypeError: Cannot read property 'value' of null

javascript - 单击外部关闭菜单

c++ - 2D vector - 通过搜索删除行

javascript - 如何在过滤数组时忽略某些对象

javascript - 覆盖默认值

facebook - block for-in 循环

javascript - Click 事件在实际按钮周围触发

arrays - 如何使用存储在自定义聚合物 2.0 元素属性中的对象

ios - 如何将一个对象数组的属性分配给另一个字符串数组?