Javascript indexOf()始终返回-1

Javascript indexOf()始终返回-1,javascript,Javascript,我尝试检索数组中en元素的索引 这很好用 var onCreate = function (event) { console.assert(markers[markerId] === undefined); var markerId = event.markerId; markers[markerId] = {}; var marker = markers[markerId]; // create

我尝试检索数组中en元素的索引

这很好用

        var onCreate = function (event) {
        console.assert(markers[markerId] === undefined);

        var markerId = event.markerId;
        markers[markerId] = {};

        var marker = markers[markerId];
        // create the container object
        marker.object3d = new THREE.Object3D();
        marker.object3d.matrixAutoUpdate = false;
        scene.add(marker.object3d);

        //UPDATE ARRAY HOLDING CURRENT MARKERS
        console.log("ON CREATE");
        console.log("current detected markers: " + currentMarkers);
        var idx = currentMarkers.indexOf(markerId); // Find the index
        console.log("marker " + event.markerId + " has index: " + idx);
        if(idx==-1) // if does not exist
            currentMarkers.push(markerId);
但这不是

    var onDelete = function (event) {

        console.assert(markers[event.markerId] !== undefined);
        var markerId = event.markerId;
        //UPDATE ARRAY HOLDING CURRENT MARKERS
        console.log("ON DELETE");
        console.log("current detected markers: " + currentMarkers);
        var idxx = currentMarkers.indexOf(markerId); // Find the index
        console.log("marker " + markerId + " has index: " + idxx);
        if(idxx != -1) {// if DOES exist
            currentMarkers.splice(idxx, 1); //Delete
            var idxxx = currentMarkersCoverChecked.indexOf(markerId); // Find the index
            if(idxxx == -1) // if does NOT exist, so if not being checked
                checkMarkerCovered(markerId);
        }
        onDeleteRandom(markerId);
        var marker = markers[markerId];
        scene.remove(marker.object3d);
        delete markers[markerId];
查看我的控制台输出:

ON CREATE 
current detected markers: 2,1,4 
marker 3 has index: -1 
ON CREATE main.js:266
current detected markers: 2,1,4,3 
marker 4 has index: 2 
ON DELETE 
current detected markers: 2,1,4,3
marker 2 has index: -1 
ON CREATE 
current detected markers: 2,1,4,3 
marker 2 has index: 0 
ON DELETE 
current detected markers: 2,1,4,3 
marker 1 has index: -1 

第二个示例不起作用,因为未定义
currentMarkersCoverChecked

第二个示例不起作用,因为未定义
currentMarkersCoverChecked

是否检查了
markerId
中的值类型

JavaScript数组允许您将
整数
类型以及
字符串
类型和
对象
类型插入
数组
。如果某个值的类型为
Integer
,并且如果您尝试
indexOf(“stringvalue”)
您可能会得到
-1作为返回值


希望这能帮助你解决这个问题

您是否检查了
markerId

JavaScript数组允许您将
整数
类型以及
字符串
类型和
对象
类型插入
数组
。如果某个值的类型为
Integer
,并且如果您尝试
indexOf(“stringvalue”)
您可能会得到
-1作为返回值


希望这能帮助你解决这个问题

哪个
indexOf
是“不工作的”?什么是
currentMarkersCoverChecked
?什么是
标记
?第二个标记(删除时)总是返回-1。但是您可以看到数组确实包含元素。如果从未达到currentMarkersCoveredChecked,b/c另一个indexOf始终返回-1(错误)。如果您实际定义了一些变量,而不是到处使用隐式全局变量,则您的问题可能不存在。是的,这些是全局数组,因为需要在OnCreate和OnDelete范围内访问它们。哪个
indexOf
不起作用?什么是
currentMarkersCoverChecked
?什么是
标记
?第二个标记(删除时)总是返回-1。但是您可以看到数组确实包含元素。如果从未达到currentMarkersCoveredChecked,b/c另一个indexOf始终返回-1(错误)。如果您实际定义了一些变量,而不是到处使用隐式全局变量,则您的问题可能不存在。是的,这些是全局数组,因为需要在OnCreate和OnDelete范围内访问它们。问题出在currentMarkers,而不是currentMarkersCoverChecked。另外,它们都被定义为全局变量。问题出在currentMarkers,而不是currentMarkersCoverChecked。另外,它们都被定义为全局变量。