根据我的hideLetters
应该返回一个数组。任何人都可以让我知道这里有什么问题吗?它返回null。我正在使用递归,它在下面的代码中返回null
我正在尝试创建hang子手游戏的简化版本。这里, 默认函数获取'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());
};
这是洗牌代码
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
您是否尝试过调试?这是相当可疑的,有一个明确的返回null,你抱怨它返回null ... –
我使用ESLINT。如果我不在箭头函数的末尾放置返回语句,则会引发此警告。 “预计在箭头功能结束时返回”。另外,即使我正在发表这个声明。它永远不会到达那里。因为,我在返回null之前递归地调用函数。而且,在递归结束时,它应该在指定的IF条件下返回。 –