[英]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.