![](/img/trans.png)
[英]How to loop through an array and use the value to try and find an object name
[英]How to search through and find a object name in an array?
我有一个player
对象,它也有一个充满其他对象玩家的数组,如下所示:
//player.characters is a list of characters available to select.
//player.CC is registered as the games 'current character' being played.
player.characters = [nullman, dwarf, human, elf, cloud, eren, erentitan, levi, mikasa];
player.cc = player.characters[0];
这些是我可以在选择屏幕期间切换游戏角色时使用的其他对象。 我编写了一个创建播放器选择按钮的功能。 我想将这个按钮设计为具有一些内置功能,因此不必在start.init
函数上重复代码。 (在使用10行相同的代码后,我意识到我需要编写一个函数来支持所有字符,而不是每个字符)。
这是我想出的代码,它将服务于每个可选字符。
function createPlayerButton(name, classID = "selection", delay, duration) {
var button = document.createElement("button");
button.textContent = name;
button.setAttribute("id", name);
button.setAttribute("class", classID);
chatbox.appendChild(button);
button.style.animationDelay = delay + "s";
button.style.animationDuration = duration + "s";
$("#"+name+"").hover(function(){
postPlayerImage("images/players/"+name+".jpg", "animated fadeIn avatar", "0", "1");
console.log(name);
console.log(player.characters.indexOf(cloud));
});
dom.el(""+name+"").onclick = function(){
player.cc = player.characters[1];
listPlayerStats(dwarf);
postPlayerImage("images/dwarf2.jpg", "animated fadeIn avatar", "1", "2");
playerSelect();
}
所以我这里有几件事。 第一段代码几乎在屏幕上创建了按钮。 第二个块是一个悬停动画,它将在屏幕上弹出角色的化身。 第三块是加载统计数据和必要图像的代码。
我遇到的问题是block-3:line-2。 Player.CC是我用来定义当前正在播放的角色的工具。 我使用player.characters索引在每个播放器之间切换,但是此数据是硬编码的。 我需要一个更强大的系统,它可以根据名称查找我已经拥有的对象,如CreatePlayerbutton( name )参数所示。
如果您查看第2块:第4行,我可以手动输入对象的名称并找到正确的索引,但是同样,这是硬编码的。 我尝试使用“名称”,但是它是字符串化的并且没有注册,因此我在索引上得到-1。
如何在函数中使用“名称”参数在player.characters数组中查找对象?
注意:我知道在块3:第3行及以后,我已经对矮数据进行了硬编码。 在弄清楚如何在第2行上设置对象之后,我可以并且将解决此问题。
您可以仅在字符数组中搜索特定名称来创建。
使用.find():
let character = player.characters.find(c => c.name == name);
有无:
let character;
for(c of player.character){
if(c.name == name){
character = c;
break;
}
}
如果您根本不想搜索,则可以将字符存储在一个对象中:
player.characters = {nullman: nullman, dwarf: dwarf, human: human, elf: elf, cloud: cloud, eren: eren, erentitan: erentitan, levi: levi, mikasa: mikasa};
并选择它们
let character = player.characters[name];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.