当我在Safari 6.0中评估以下javascript时:
Array.indexOf([1,2,3],3)
它返回-1,基本上说3不在数组中!
但在Firefox中它正确返回2.
我知道Array.indexOf是一个相对较新的函数,所以我有代码测试它是否存在,如果没有定义它。但是看起来这个功能内置于Safari。
这是一个错误,还是我做错了什么?
编辑:这实际上是问题的简化版本。我实际上在做的是尝试在TR中找到TD单元的索引:
var tr = td.parentNode
var col = Array.indexOf(tr.cells,td)
tr.cells
没有indexOf
。但是,使用Array.indexOf
我可以这样对待它,至少在Firefox中是这样。在Safari中,这不起作用。
我想在这种情况下我实际上可以使用cellindex,但如果没有定义,我将如何获取索引?
答案 0 :(得分:7)
我想知道为什么你不按预期使用它:
[1,2,3].indexOf( 3 );
除非是学术问题。在这种情况下,它实际上是一个 bug 特殊的Firefox实现。如果您想直接使用Array.prototype
版本,您应该像
Array.prototype.indexOf.call([1,2,3], 3);