indexOf忽略了数组中的元素
Elements in array ignored by indexOf
我有以下函数。除了评论中提到的"if"语句外,一切都正常。
function markRow(e) {
var row = e.currentTarget.value ;
var id, rid, field, color, ico ;
rid = markedrows.indexOf(row) ;
if (rid != -1) {
markedrows.splice(rid, 1) ;
ico = ICO_FOLDER + ICO_PLUS ;
color = COLOR_UNMARKED ;
} else {
markedrows.push(row) ;
ico = ICO_FOLDER + ICO_MINUS ;
color = COLOR_MARKED ;
}
e.currentTarget.src = ico ;
for (var col = 1 ; col <= current.cols() ; col++) {
alert(col) ;
alert(markedcols.toString()) ;
// This 'if' doesn't seem to work
if (markedcols.indexOf(col) == -1) {
// This part is ALWAYS executed even when the column is in markedcols
// I get no error messages in firefox
id = "r" + row + "c" + col ;
field = document.getElementById(id) ;
field.style.background = color ;
}
}
markedrows.sort(numericalorder) ;
}
alert
是用来调试的,它们清楚地表明markedcols
确实包含了它应该包含的列,但indexOf
似乎没有捕捉到它
据我所知,所有现代浏览器,尤其是firefox,现在都支持数组上的indexOf
,所以我完全迷失了方向。我已经一遍又一遍地研究了代码的逻辑,它应该有效。只是没有。
我认为你的问题在于:
["1"].indexOf(1) === -1; // true
所以你可能想要.indexOf(col.toString())
。
尽管"1" == 1
和.indexOf
似乎做了类似===
的比较。V8至少做到了。
编辑:规范规定确实应该使用===
:
设
same
是将严格相等比较算法应用于searchElement
和elementK
的结果。如果
same
是true
,则返回k
。
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- 用于检查数组中是否存在元素的javascript自定义方法
- 在数组中的一个元素上设置多个值
- 从组件状态的数组中删除元素
- Mongoose-在更新中删除数组元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 数组中元素(字符串)的总和
- javascript数组元素是否知道其封闭数组
- 查找数组javascript中包含的元素类型
- 如何在javascript上向数组的对象添加新元素
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 一些元素没有从数组中删除
- JS.循环遍历多维数组,以计数元素在每列中的出现次数
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 元素不会添加到Javascript数组中
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何将函数应用于两个数组的第 n 个元素(数组的数组)
- Js接受两个值之间的元素(数组)