JavaScript中如何在for of循环内正确使用indexOf获取元素索引
错误原因
Array.indexOf() 始终返回目标元素在数组中第一次出现的位置索引,你遍历到第二个X元素时,调用array.indexOf('X')仍然会返回第一个X的位置3,所以最终输出结果为[3, 3]。
修复方案
如果要在for/of循环中同时拿到元素和对应的索引,可以调用数组的entries()方法,它会返回一个迭代器,每次迭代产出[索引, 元素值]格式的数组,直接解构取值即可:
var s = '_' var x = 'X' var O = 'O' var spaceArr = [s, s, s, x, s, s, s, s, x] function spaceChecker(array) { let currGame = [] for (const [index, element] of array.entries()) { if (element === 'X') { currGame.push(index) } } return currGame } console.log(spaceChecker(spaceArr)) // 输出结果:[3, 8]
内容的提问来源于stack exchange,提问作者Max Waters
相关产品推荐
相关产品推荐

