Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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_Arrays_Multidimensional Array - Fatal编程技术网

在javascript中创建多维数组

在javascript中创建多维数组,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我不确定该如何解释,但我试图用javascript创建一个多维匿名数组。我是Javascript新手,到目前为止主要做jQuery的工作。但现在我需要这个,我正在努力实现的应该是这样的: var outerArray = [], innerArray = new Array("position", "value", "done"); outerArray.push(innerArray); // Then i want to use outerArray["dynamicNa

我不确定该如何解释,但我试图用javascript创建一个多维匿名数组。我是Javascript新手,到目前为止主要做jQuery的工作。但现在我需要这个,我正在努力实现的应该是这样的:

var
    outerArray = [],
    innerArray = new Array("position", "value", "done");

outerArray.push(innerArray);

// Then i want to use
outerArray["dynamicNameHere"]["position"] = 30;
outerArray["dynamicNameHere"]["value"] = 50;
outerArray["dynamicNameHere"]["done"] = false;

outerArray["otherDynamicNameHere"]["position"] = 100;
outerArray["otherDynamicNameHere"]["value"] = 500;
outerArray["otherDynamicNameHere"]["done"] = true;
阵列是二维的。有些值是布尔值,但正如您在我的示例代码中看到的那样,大多数值都是整数。我希望我的代码能帮助您理解我的意图,因为我不确定如何进一步解释它。 而且,我知道上面的代码不起作用,但我不知道如何创建类似的东西,或者是否可以使用javascript(至少在PHP中是这样)。这只是我找到的一些关于数组的代码片段,我希望这能起作用。但事实并非如此。但对我来说,“推”似乎是一种方法


感谢您的帮助和时间。

您似乎更需要一个对象而不是数组:

var outerArray = {};

// add elements
outerArray[ 'dynamicNameHere' ] = {
  'position': 30,
  'value': 50,
  'done': false
};

// access those
console.log( outerArray[ 'dynamicNameHere' ][ 'position' ] );
// or
console.log( outerArray[ 'dynamicNameHere' ].position );

JavaScript中的数组仅用于数字索引。没有

您似乎想要普通的嵌套对象:

outerObject = new Object();

outerObject["dynamicNameHere"] = new Object();
outerObject["dynamicNameHere"]["position"] = 30;
outerObject["dynamicNameHere"]["value"] = 50;
outerObject["dynamicNameHere"]["done"] = false;

outerObject["otherDynamicNameHere"] = new Object();
outerObject["otherDynamicNameHere"]["position"] = 100;
outerObject["otherDynamicNameHere"]["value"] = 500;
outerObject["otherDynamicNameHere"]["done"] = true;
但更容易使用的是对象文字符号:

var outerObject = {
    dynamicNameHere: {
        position: 30,
        value: 50,
        done: false
    },
    otherDynamicNameHere: {
        position: 100,
        value: 500,
        done: true
    }
}
但是,如果这些属性名称确实是动态的,则需要使用括号表示法:

var outerObject = {}, // empty object
    dynamicName = …,
    otherDynamicName = …;
outerObject[dynamicName] = {
    position: 30,
    value: 50,
    done: false
};
outerObject[otherDynamicName] = {
    position: 100,
    value: 500,
    done: true
};

是否有任何方法可以检查具有“dynamicName”的对象是否已经存在?您的意思是,在
outerObject
上是否已经存在具有该名称的属性?是的,类似于如果(!outerObject[dynamicName]){/*不存在->创建*/}。因为我需要以某种方式确保我只创建了一次带有“dynamicName”的对象。或者这对javascript来说不重要吗?至少在我的代码中,需要经常更改值,如果用户滚动页面,基本上总是这样。没关系,您可以直接覆盖它。但是如果您想测试它,您可以使用
如果(!(outerObject中的dynamicPropName)){/*不存在*/)
,这比检查
未定义的
更可靠。