Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
此关键字在javascript中的异常行为_Javascript - Fatal编程技术网

此关键字在javascript中的异常行为

此关键字在javascript中的异常行为,javascript,Javascript,我有下面的代码片段,它应该返回敏捷团队的所有团队名称。但是代码返回未定义的。我已经试过了let\u this=this并将此替换为此,但没有结果。谁能帮我做这个吗 let teamSelector = { teams: ['Team Alpha', 'Team Beta', 'Team Delta'], selectTeam: function(members){ // let _this = this; return members.map((member)=>

我有下面的代码片段,它应该返回敏捷团队的所有团队名称。但是代码返回未定义的
。我已经试过了
let\u this=this并将
替换为
,但没有结果。谁能帮我做这个吗

let teamSelector = {
  teams: ['Team Alpha', 'Team Beta', 'Team Delta'],
  selectTeam: function(members){
    // let _this = this; 
    return members.map((member)=>{
      return `${member} is on ${this.teams[Math.random() * 3]}`;
    });
  }
};

teamSelector.selectTeam(['Anna','Jhon','Kevin','Lesli']);
random()返回小数。如果需要数组索引,则需要整数

让团队选择器={
团队:['Team Alpha'、'Team Beta'、'Team Delta'],
选择团队:功能(成员){
//让_this=this;
返回成员。映射((成员)=>{
return${member}位于${this.teams[Math.random()*3|0]}上;
});
}
};
log(teamSelector.selectTeam(['Anna','Jhon','Kevin','Lesli'])
Math.random()返回小数。如果需要数组索引,则需要整数

让团队选择器={
团队:['Team Alpha'、'Team Beta'、'Team Delta'],
选择团队:功能(成员){
//让_this=this;
返回成员。映射((成员)=>{
return${member}位于${this.teams[Math.random()*3|0]}上;
});
}
};

log(teamSelector.selectTeam(['Anna','Jhon','Kevin','Lesli'])您必须在math.random中通过默认值0

let teamSelector = {
      teams: ['Team Alpha', 'Team Beta', 'Team Delta'],
      selectTeam: function(members){
        // let _this = this; 
        return members.map((member)=>{
          return `${member} is on ${this.teams[Math.random() * 3 | 0]}`;
        });
      }
    };

    teamSelector.selectTeam(['Anna','Jhon','Kevin','Lesli']);

您必须在math.random中通过默认值0

let teamSelector = {
      teams: ['Team Alpha', 'Team Beta', 'Team Delta'],
      selectTeam: function(members){
        // let _this = this; 
        return members.map((member)=>{
          return `${member} is on ${this.teams[Math.random() * 3 | 0]}`;
        });
      }
    };

    teamSelector.selectTeam(['Anna','Jhon','Kevin','Lesli']);

Math.random
生成的值是一个浮点数,因此它永远不会引用
this.teams
中的数组索引,因此
未定义的

您需要做的是使用
Math.random()*this.teams.length
生成一个随机数,这样它就永远不会生成大于数组大小本身的索引值。然后,您需要使用
Math.floor
将其取整为
Math.random
生成浮点数

let teamSelector = {
  teams: ["Team Alpha", "Team Beta", "Team Delta"],
  selectTeam: function (members) {
    return members.map((member) => 
    `${member} is on ${
        this.teams[Math.floor(Math.random() * this.teams.length)]
      }`
    );
  },
};

teamSelector.selectTeam(["Anna", "John", "Kevin", "Lesli"]);

也只是一个旁注-箭头函数隐式返回,因此您不需要在映射中
return
。但是,您确实需要对
映射
本身使用
返回
,以将
的上下文保持在对象的块范围内。您将看到,如果您隐式返回
映射
,则
将引用
窗口
对象或更高的块范围,如类实现。

Math.random
生成的值是一个浮点数,因此它永远不会引用
此中的数组索引。teams
,因此,
未定义

您需要做的是使用
Math.random()*this.teams.length
生成一个随机数,这样它就永远不会生成大于数组大小本身的索引值。然后,您需要使用
Math.floor
将其取整为
Math.random
生成浮点数

let teamSelector = {
  teams: ["Team Alpha", "Team Beta", "Team Delta"],
  selectTeam: function (members) {
    return members.map((member) => 
    `${member} is on ${
        this.teams[Math.floor(Math.random() * this.teams.length)]
      }`
    );
  },
};

teamSelector.selectTeam(["Anna", "John", "Kevin", "Lesli"]);
也只是一个旁注-箭头函数隐式返回,因此您不需要在映射中
return
。但是,您确实需要对
映射
本身使用
返回
,以将
的上下文保持在对象的块范围内。您将看到,如果您隐式返回
映射
,那么
将引用
窗口
对象或更高的块范围,例如类实现。

Math.random()*3
是返回一个浮点数,您需要获得它的下限
Math.floor(Math.random()*3)
Math.random()*3
返回一个浮点数,您需要获得它的floor<代码>数学地板(数学随机()*3)