You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中player_array[step].domino_set未定义错误的原因排查求助

问题分析与解决:player_array[step].domino_set is undefined错误

嘿,我来帮你排查这个问题!你遇到的Error: player_array[step].domino_set is undefined错误其实根源很明确,咱们一步步拆解:

核心错误:player_array存储的是字符串而非对象

你定义的player_array是这样的:

var player_array = ['player0', 'player1', 'player2', 'player3'];

这里面装的是字符串'player0'、'player1',而不是你后面用Object.create(player)创建的player0、player1这些实际对象。当你在循环里用player_array[step]取到的是字符串,字符串自然没有domino_set属性,所以会抛出undefined错误。

其他需要修正的小问题

除了核心错误,代码里还有两个细节问题:

  • arrayAssign函数里的return this.die;是错误的:你应该直接返回变量die,而且这里的this指向也不对(直接调用函数时this在非严格模式下指向全局对象),完全不需要用this。
  • domino_arrayCopy.splice(die, 1);参数错误:splice的第一个参数应该是元素的索引,而不是元素值。你已经用random拿到了正确的索引,所以应该改成splice(random, 1),否则会因为找不到对应元素导致删除失败,数组长度不会正确减少。

修正后的完整代码

var player = { user: 'CPU', order: 0, board: 'string', domino_set: [], player_order: '0' };
const domino_array = ['ZeroZero', 'ZeroTwo', 'ZeroThree', 'ZeroFour', 'ZeroFive', 'ZeroSix', 'OneZero', 'OneOne', 'OneTwo', 'OneThree', 'OneFour', 'OneFive', 'OneSix', 'TwoTwo', 'TwoThree', 'TwoSix', 'ThreeThree', 'ThreeSix', 'FourTwo', 'FourThree', 'FourFour', 'FourSix', 'FiveTwo', 'FiveThree', 'FiveFour', 'FiveFive', 'FiveSix', 'SixSix'];
var domino_arrayCopy = [...domino_array]; // 用展开运算符复制数组更简洁
var player0 = Object.create(player);
var player1 = Object.create(player);
var player2 = Object.create(player);
var player3 = Object.create(player);
player0.user = "PC";

// 这里存储实际的player对象,不是字符串
var player_array = [player0, player1, player2, player3];

function diviArray() {
  function arrayAssign() {
    var random = Math.floor(Math.random() * domino_arrayCopy.length);
    var die = domino_arrayCopy[random];
    domino_arrayCopy.splice(random, 1); // 用索引作为splice的第一个参数
    return die; // 直接返回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();

这样修改后,代码就能正常将多米诺骨牌分配给每个玩家的domino_set数组了。

内容的提问来源于stack exchange,提问作者BlueConch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:22:46