我是 JavaScript 的初學者,正在從事我的第一個專案:Tic Tac Toe!
我正在嘗試撰寫一個函式,該函式將使用 for/of 回圈來查看游戲板上的所有空格,并回傳與其中包含 X 的任何空格的索引相對應的數字陣列。
這是我的變數:
var s = '_'
var x = 'X'
var O = 'O'
var spaceArr = [s,s,s,x,s,s,s,s,x]
spaceArray 是游戲板,現在里面有隨機的 x。這是我對該功能的嘗試
function spaceChecker(array){
let currGame = []
for (var element of array){
if (element==='X')
currGame.push(array.indexOf(element))
}
return currGame
}
console.log (spaceChecker(spaceArr))
它目前回傳:
[ 3, 3 ]
我怎樣才能讓 .indexOf 每次 for/of 回圈更新?謝謝!
uj5u.com熱心網友回復:
您已經使用indexOfwhich 將在X每次搜索時回傳 的第一個索引X。如果您想使用for..of回圈,那么您必須跟蹤index您所在的位置。
var s = "_";
var x = "X";
var O = "O";
var spaceArr = [s, s, s, x, s, s, s, s, x];
function spaceChecker(array) {
let currGame = [];
let index = 0;
for (var element of array) {
if (element === "X") {
currGame.push(index);
}
index ;
}
return currGame;
}
console.log(spaceChecker(spaceArr));
ALTERNATE SOLUTION ?
您可以使用reduce此處獲取X陣列中的索引
var s = "_";
var x = "X";
var O = "O";
var spaceArr = [s, s, s, x, s, s, s, s, x];
function spaceChecker(array) {
return array.reduce((acc, curr, index) => {
if (curr === "X") acc.push(index);
return acc;
}, []);
}
console.log(spaceChecker(spaceArr));
uj5u.com熱心網友回復:
由于您不需要從回圈中回傳任何內容,因此您可以使用 forEach 回圈。
forEach((element, index) => {
// if condition met push index in custom array
});
uj5u.com熱心網友回復:
indexOf() 方法回傳可以在陣列中找到給定元素的第一個索引,如果不存在,則回傳 -1。
因此,您的代碼將始終回傳,3因為這將是X每次迭代時找到的第一個索引。
使用基本的 for/loop 并將當前迭代的索引推入currGamewhenX找到時要容易得多。
const s = '_';
const x = 'X';
const O = 'O';
const spaceArr = [s, s, s, x, s, s, s, s, x];
function spaceChecker(array) {
const currGame = [];
for (let i = 0; i < array.length; i ) {
if (array[i] === 'X') currGame.push(i);
}
return currGame;
}
console.log(spaceChecker(spaceArr));
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/351317.html
標籤:javascript 数组 for循环 指数 井字游戏
上一篇:再次點擊后無法洗掉課程
