私によればhideLetters
は配列を返すべきです。誰でも私に何が間違っているかを教えてもらえますか?ヌルが返されます。私は再帰を使用しており、以下のコードでヌルを返しています
私はハングマンゲームの簡略版を作成しようとしています。ここでは、 デフォルトの関数は 'str'入力を取得します。
import shuffle from '../../scripts/ShuffleArrayUtil';
const checkHiddenCount = (arr) => {
let count = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i].hidden === true) {
count += arr[i].count;
}
}
return count;
};
const hideLetters = (gameArr, hiddenLetters) => {
const gameArray = JSON.parse(JSON.stringify(gameArr));
if (checkHiddenCount(gameArray) >= hiddenLetters) {
console.log('here', gameArray);
return JSON.parse(JSON.stringify(gameArray));
}
for (let i = 0; i < gameArray.length; i++) {
if (gameArray[i].hidden === false) {
gameArray[i].hidden = true;
break;
}
}
hideLetters(gameArray, hiddenLetters);
return null;
};
export default (ansStr) => {
let gameArr = [];
const ansArr = ansStr.split('');
const uniqAnsArr = [...new Set(ansArr)];
const totalLetters = ansArr.length;
const hiddenLetters =() => ((totalLetters % 2 === 0) ? (totalLetters/2) : Math.floor(totalLetters/2) + 1);
for (let i = 0; i < uniqAnsArr.length; i++) {
gameArr.push({
letter: uniqAnsArr[i],
count: ansArr.filter((x) => x === ansArr[i]).length,
hidden: false,
});
}
gameArr = shuffle(gameArr);
console.log(gameArr);
return hideLetters(gameArr, hiddenLetters());
};
これはシャッフルコードhideLetters
インサイド
export default (deck) => {
const randomizedDeck = [];
const array = JSON.parse(JSON.stringify(deck));
while (array.length !== 0) {
const rIndex = Math.floor(array.length * Math.random());
randomizedDeck.push(array[rIndex]);
array.splice(rIndex, 1);
}
return JSON.parse(JSON.stringify(randomizedDeck));
};
hideLetterの 'return null'ステートメントの目的は何ですか? – Peter
デバッグを試しましたか?ヌルの明示的なリターンがあり、それがヌルを返すと不平を言っていることはかなり疑わしいです... –
私はESLINTを使っています。矢印関数の最後にreturnステートメントを置かないと、この警告がスローされます。 "矢印機能の終了時にリターンを期待する"。また、私はこの声明を出しています。それは決してそこに届くべきではない。以来、私は再帰的にnullを返す前に関数を呼び出すよ。また、再帰の終了時には、指定されたIF条件に戻る必要があります。 –