簡體   English   中英

JavaScript indexOf()始終返回-1

[英]Javascript indexOf() always returns -1

我嘗試檢索數組中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 

您是否檢查了markerId值的類型

JavaScript Array允許您將Integer類型以及String類型和Object類型插入Array 如果某個值的類型為Integer並且嘗試使用indexOf("stringvalue"); 您可能會得到-1 as return value

希望這可以幫助您解決問題!

第二個示例不起作用,因為currentMarkersCoverChecked

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM