JavaScript:通过其他数组元素的索引访问ArrayElement?array [array [0]]返回undefined

arl*_*iss 0 javascript arrays

我正在尝试创建接受7位数代码(至少)的函数,然后加载角色的图像/元素,从而从代码创建一个字符.

我写了这段代码:

<script type="text/javascript">
var skins = [];
skins["w"] = "http://example.com/char_elements/base.png";

var eyes = [];
eyes["b"] = "http://example.com/char_elements/eyes/blue.png";
eyes["g"] = "http://example.com/char_elements/eyes/green.png";
eyes["r"] = "http://example.com/char_elements/eyes/red.png";

var hair = [];
hair["b"] = "http://example.com/char_elements/hair/black.png";
hair["w"] = "http://example.com/char_elements/hair/blond.png";
hair["s"] = "http://example.com/char_elements/hair/brown.png";

var mouth = [];
mouth["h"] = "http://example.com/char_elements/mouth/happy.png";

var pants = [];
pants["s"] = "http://example.com/char_elements/pants/shorts.png";

var shoes = [];
shoes["b"] = "http://example.com/char_elements/shoes/black.png";

var torso = [];
torso["s"] = "http://example.com/char_elements/torso/shirt.png"

function LoadChar(code){
var data = code.split(/(?=[a-z])/i);
var skins = [skins[data[0]], eyes[data[1]], hair[data[2]], mouth[data[3]], pants[data[4]], shoes[data[5]], torso[data[6]]];

document.getElementById("out").innerHTML = skins.toString();
}
</script>
<div id="out"></div>
Run Code Online (Sandbox Code Playgroud)

但是,当我调用LoadChar("wgbhsbs")时;

它刺激了我"无法读取未定义的属性"

我仍然是JS中Arrays的新手,所以我确信我正在制作一些简单的语法错误或做一些有点错误的事情.

那么它的作用是:

1)接受代码并将其拆分为7个元素(总是7个,没有别的)将它作为数组存储在"data"变量中.2)通过加载:skin [代码编号]和其他元素相同来构建"皮肤"数组.3)出于测试目的,我试图输出皮肤数组,但它在第2步停止.

这有什么解释吗?

LcS*_*zar 5

您正在重新创建以前定义的skins变量.

对函数内部的变量使用不同的名称,你会没事的.

var skins = [];
skins["w"] = "http://example.com/char_elements/base.png";

var eyes = [];
eyes["b"] = "http://example.com/char_elements/eyes/blue.png";
eyes["g"] = "http://example.com/char_elements/eyes/green.png";
eyes["r"] = "http://example.com/char_elements/eyes/red.png";

var hair = [];
hair["b"] = "http://example.com/char_elements/hair/black.png";
hair["w"] = "http://example.com/char_elements/hair/blond.png";
hair["s"] = "http://example.com/char_elements/hair/brown.png";

var mouth = [];
mouth["h"] = "http://example.com/char_elements/mouth/happy.png";

var pants = [];
pants["s"] = "http://example.com/char_elements/pants/shorts.png";

var shoes = [];
shoes["b"] = "http://example.com/char_elements/shoes/black.png";

var torso = [];
torso["s"] = "http://example.com/char_elements/torso/shirt.png"

function LoadChar(code){
  var data = code.split(/(?=[a-z])/i);
  var other_variable = [skins[data[0]], eyes[data[1]], hair[data[2]], mouth[data[3]],   pants[data[4]], shoes[data[5]], torso[data[6]]];

  alert(other_variable.toString());
}
LoadChar("wgbhsbs");
Run Code Online (Sandbox Code Playgroud)