javascript indexOf总是返回-1

javascript indexOf always returning -1

本文关键字:返回 indexOf javascript      更新时间:2023-09-26

制作(跛脚)游戏,我想检查所选方块是否包含怪物,但我的indexOf一直返回-1。下面的相关代码。

初始化:

var monsters = [];
var monsterPositions = [2,8,13,15,22];
var player = { "currentPosition": 0 };
for ( var i in monsterPositions ) {
    monsters[i] = new createMonster("monster",monsterPositions[i],1); }
function createMonster(name,startingPoint,level) {
    this.currentPosition = startingPoint; }

<td> onclick:触发的功能

function processClick(trigger){
    console.log( trigger.id + " " + monsterPositions );
    if ( monsterPositions.indexOf(trigger.id) >= 0 ){
        if ( !fight( findMonster( parseInt( trigger.id ) ) ) ){
            return;
        }
    }
    if ( gameOn ) move( parseInt( trigger.id ) );
}

页面总是直接进入move(),即使它是一个怪物点,这里是console.log()结果:

1 2,8,13,15,22 adventure.js (line 79)
2 2,8,13,15,22 adventure.js (line 79)
7 2,8,13,15,22 adventure.js (line 79)
8 2,8,13,15,22 adventure.js (line 79)
13 2,8,13,15,22 adventure.js (line 79)
18 2,8,13,15,22 adventure.js (line 79)
23 2,8,13,15,22 adventure.js (line 79)
22 2,8,13,15,22 adventure.js (line 79)
21 2,8,13,15,22 adventure.js (line 79)
20 2,8,13,15,22 adventure.js (line 79)
15 2,8,13,15,22 adventure.js (line 79)

(如果以上代码还不够,请链接到这里),我需要帮助。(当然,我为什么会在这里)

trigger.id可能返回一个字符串,其中数组中充满了数字。

这个jsfiddle展示了它在操作中的作用,以及它如何使用数字以及如何使用parseInt()将字符串ID转换为数字。

尝试这个

 if ( monsterPositions.indexOf(Number(trigger.id)) >== 0 )