据我说hideLetters
应该返回一个数组。谁能告诉我这里有什么问题?它返回null。
我正在尝试创建一个简化版的刽子手游戏。这里, 默认函数获取'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));
};
答案 0 :(得分:0)
在hideLetters
内,有一个return null
声明。除非第一次致电(checkHiddenCount(gameArray) >= hiddenLetters)
时条件true
为hideLetters
,否则hideLetters
将始终返回null
。
另请注意,当您递归调用hideLetters
函数时,您没有使用其返回值。