gpt4 book ai didi

javascript - jquery 多维数组值

转载 作者:行者123 更新时间:2023-12-02 17:17:15 26 4
gpt4 key购买 nike

需要一些关于我正在做的完全在数组上的脚本的帮助

    skill = [
//[ID, "NAME", TMLEVEL, Learn, Mastery, Prerequisite, PrerequisiteLvl],
//Schoolgirl, Fighter
[0, "Steel Punch", 0, 0, null, null],
[1, "Shockwave", 1, 1, 2, null],
[2, "Bull's Eye", 10, 2, 2, null],
[3, "Burning Rave", 20, 2, 2, null],
[4, "Shockvibe", 20, 1, 2, null],
[5, "Sense Breaker", 20, 1, 2, null],
[6, "Luck Breaker", 20, 1, 2, null],
[7, "Pumping Heart", 25, 3, 3, skill[3], 1],
[8, "Armor Breaker", 30, 2, 2, skill[1], 10],
[9, "Upper Smash", 40, 2, 2, skill[2], 10],
[10, "Hyper Beat", 45, 4, 3, [skill[2],skill[3]], [10,10]],
[11, "Tornado Bomb", 50, 3, 3, skill[8], 1]
];

我需要在数组内部的某些点再次调用数组以将数组值放入其中,就像我在这里一样。理论上这工作正常,没有任何错误,但是当我调用其中的数组时,它说它是“未定义”。

有人知道我怎样才能做到这一点而不需要重写所有内容吗? (因为我在 +- 300 行代码中使用了它)。

最佳答案

经过漫长的过程,我想出了一个解决方案,它将取代所有先决条件,即使它们有几个级别深(例如,技能_3需要技能_2,而技能_2又需要技能_1...)。

这将需要正确声明您的 skill 变量(在您的问题中,并非所有技能都有 7 个变量)。

以下是变量的示例:

var skill = [
//[ID, "NAME", TMLEVEL, Learn, Mastery, Prerequisite, PrerequisiteLvl],
[0, "Steel Punch", 0, 0, 0, null, null],
[1, "Shockwave", 1, 1, 2, null, null],
[2, "Bull's Eye", 10, 2, 2, 7, null],
[3, "Burning Rave", 20, 2, 2, null, null],
[4, "Shockvibe", 20, 1, 2, null, null],
[5, "Sense Breaker",20, 1, 2, null, null],
[6, "Luck Breaker", 20, 1, 2, null, null],
[7, "Pumping Heart",25, 3, 3, 3, 1],
[8, "Armor Breaker",30, 2, 2, 7, 10],
[9, "Upper Smash", 40, 2, 2, 2, 10],
[10,"Hyper Beat", 45, 4, 3, [2,3], [10,10]],
[11,"Tornado Bomb", 50, 3, 3, 8, 1]
];

现在,我想到了一个函数 setPreventions(),对于 1 项技能,它可以递归地设置其先决条件:

Array.prototype.setPrerequisites = function(){
if (typeof this[5] === "number")
{
this[5]=skill[getPosOfSkill(this[5])];
this[5].setPrerequisites();
}
else if (this[5] instanceof Array)
{
if (this[5].isSkill()) this[5].setPrerequisites();
else
{
for(var i = 0; i < this[5].length; i++)
{
this[5][i] = skill[getPosOfSkill(this[5][i])];
this[5][i].setPrerequisites();
}
}
}
}

此函数使用 isSkill() 来确定数组是技能还是技能 ID 数组:

Array.prototype.isSkill = function(){
return this.length==7 && typeof this[1]==="string";
}

它还使用 getPosOfSkill(id) 来查找正确的技能,以防您的技能未按特定顺序列出,或者 ID 丢失:

function getPosOfSkill(id){
for(var i=0; i<skill.length; i++) if (skill[i][0]==id) return i;
return false;
}

您所要做的就是声明您的skill变量,然后填充它:

for (var i = 0; i < skill.length; i++) skill[i].setPrerequisites();

// if you want to see the results
console.log(skill);

Here is a jsFiddle Demo

关于javascript - jquery 多维数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com