這段代碼回傳錯誤。player_array[step].domino_set是未定義的。我搞不清楚原因。 看起來這些變數是在一個全域范圍內,所以我不明白為什么會出錯。
var player = {
user: 'CPU'。
order: 0,
board: 'string',
domino_set: [],
player_order: '0'。
};
const domino_array = ['ZeroZero'/span>, 'ZeroTwo'/span>, 'ZeroThree'/span>, 'ZeroFour'/span>, 'ZeroFive'/span>, 'ZeroSix'/span>, 'OneZero'/span>, 'OneOne'/span>, 'OneTwo'/span>, 'OneThree'/span>, 'OneFour'/span>, 'OneFive', 'OneSix', '二二', '二三', '二六', '三三'。'ThreeSix'/span>, 'FourTwo', 'FourThree', 'FourFour'/span>, 'FourSix'/span>, 'FiveTwo'/span>, 'FiveThree'/span>, 'FiveFour', 'FiveFive', 'FiveSix', 'Six'] 。
var domino_arrayCopy = ['ZeroZero'/span>, 'ZeroTwo'/span>, 'ZeroThree'/span>, 'ZeroFour'/span>, 'ZeroFive'/span>, 'ZeroSix'/span>, 'OneZero'/span>, 'OneOne'/span>, 'OneTwo'/span>, 'OneThree'/span>, 'OneFour'/span>, 'OneFive', 'OneSix', '二二', '二三', '二六', '三三'。'ThreeSix'/span>, 'FourTwo', 'FourThree', 'FourFour'/span>, 'FourSix'/span>, 'FiveTwo'/span>, 'FiveThree'/span>, 'FiveFour', 'FiveFive', 'FiveSix', 'Six'] 。
var player_array = ['player0'/span>, 'player1'/span>, 'player2'/span>, 'player3'/span>]。
var player0 = Object.create(player)。
var player1 = Object.create(player)。
var player2 = Object.create(player)。
var player3 = Object.create(player);
player0;
player0.user = "PC";
player1;
player2;
player3;
function diviArray() {
function arrayAssign() {
var random = Math.floor(Math. random() * domino_arrayCopy.length) 。
var die = domino_arrayCopy[隨機];
domino_arrayCopy.splice(die, 1)。
return this.die。
}
for (let step = 0; step < player_array.length; step ) {
for (let innerStep = 0; innerStep < 7; innerStep ) {
player_array[step].domino_set.push(arrayAssign)。
}
}
}
diviArray()
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
Object.create在物件中的domino_set陣串列現得很奇怪,所以在我進一步研究的時候,因為我不完全明白為什么,這里有一個解決方案,使用class代替。
class Player {
constructor() {
this.user = 'CPU';
this.order = 0;
this.board = 'string'/span>;
this.domino_set = []。
this.player_order = '0'/span>;
}
};
const dominoArray = ['ZeroZero'/span>, 'ZeroTwo'/span>, 'ZeroThree'/span>, 'ZeroFour'/span>, 'ZeroFive'/span>, 'ZeroSix'/span>, 'OneZero'/span>, 'OneOne'/span>, 'OneTwo'/span>, 'OneThree'/span>, 'OneFour'/span>, 'OneFive', 'OneSix', '二二', '二三', '二六', '三三'。'ThreeSix'/span>, 'FourTwo', 'FourThree', 'FourFour'/span>, 'FourSix'/span>, 'FiveTwo'/span>, 'FiveThree'/span>, 'FiveFour', 'FiveFive', 'FiveSix', 'Six'] 。
const player_array = [new Player(), new Player() 。new Player(), new Player() ] 。
function diviArray(dominoArray) {
function arrayAssign() {
var random = Math.floor(Math. random() * dominoArray.length) 。
return dominoArray.splice(random, 1) [0]。
}
for (let step = 0; step < player_array.length; step ) {
for (let innerStep = 0; innerStep < 7; innerStep ) {
player_array[step].domino_set.push(arrayAssign)。
}
}
console.log(player_array)。
}
diviArray(dominoArray);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
player_array應該是一個物件的陣列。你的是一個字串的陣列,這就是為什么你得到了錯誤。另外,Domino_set推送行的行為不符合預期,所以我調整了一下代碼。
。const player = {
user: 'CPU'。
order: 0,
board: 'string',
domino_set: [],
player_order: '0'。
};
const domino_array = ['ZeroZero'/span>, 'ZeroTwo'/span>, 'ZeroThree'/span>, 'ZeroFour'/span>, 'ZeroFive'/span>, 'ZeroSix'/span>, 'OneZero'/span>, 'OneOne'/span>, 'OneTwo'/span>, 'OneThree'/span>, 'OneFour'/span>, 'OneFive', 'OneSix', '二二', '二三', '二六', '三三'。'ThreeSix'/span>, 'FourTwo', 'FourThree', 'FourFour'/span>, 'FourSix'/span>, 'FiveTwo'/span>, 'FiveThree'/span>, 'FiveFour', 'FiveFive', 'FiveSix', 'Six'] 。
var domino_arrayCopy = ['ZeroZero'/span>, 'ZeroTwo'/span>, 'ZeroThree'/span>, 'ZeroFour'/span>, 'ZeroFive'/span>, 'ZeroSix'/span>, 'OneZero'/span>, 'OneOne'/span>, 'OneTwo'/span>, 'OneThree'/span>, 'OneFour'/span>, 'OneFive', 'OneSix', '二二', '二三', '二六', '三三'。'ThreeSix'/span>, 'FourTwo', 'FourThree', 'FourFour'/span>, 'FourSix'/span>, 'FiveTwo'/span>, 'FiveThree'/span>, 'FiveFour', 'FiveFive', 'FiveSix', 'Six'] 。
const player0 = Object.create(player)。
const player1 = Object.create(player)。
const player2 = Object.create(player)。
const player3 = Object.create(player)。
player0.user = "PC"。
const player_array = [player0, player1, player2, player3];
function diviArray() {
function arrayAssign() {
const random = Math.floor(Math. random() * domino_arrayCopy.length) 。
const die = domino_arrayCopy[隨機];
domino_arrayCopy.splice(die, 1)。
return die。
}
for (let step = 0; step < player_array.length; step ) {
let arr = [] 。
for (let innerStep = 0; innerStep < 7; innerStep ) {
arr.push(arrayAssign()。
}
player_array[step].domino_set = [...arr]。
}
console.log(player_array)
}
diviArray()
<iframe name="sif3" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/329123.html
標籤:
