2010-01-25 33 views
0

,你可以这样做:价值分配到阵列中的JavaScript

$key1 = 1; 
$key2 = 1; 
$array[$key1][$key2] = 'hi'; 

在JavaScript中,我试图用这样的:

key1 = 1; 
key2 = 1; 
var array = new Array(); 
array[key1][key2] = 'hi'; 

,但它没有工作。我怎么能在JavaScript中做同样的事情?

回答

6

你的问题是,你需要在它

var key1 = 1; 
var key2 = 1; 
var array = []; 
array[key1]=[]; 
array[key1][key2] = 'hi'; 

或者你可以做到这一切在一个指定值之前实例内阵列:

var array=[['hi']] 

此外,你应该避免分配给除非你正在更新现有的元素。第一个例子以上将会被自动添加元素

array[0]=undefined; 

如果要使用特定的键,而不是仅仅索引,你应该使用词典或对象(字典和对象是同一个东西我的JavaScript)

+0

什么var array = []和var array = new Array()之间的区别? – ajsie

+0

没有区别。 – elzapp

4

key1数组的属性在您尝试将属性key2指定给它时未定义。在开始为其分配值之前,您需要实际指示array[key1]是一个数组。

例如:

array[key1] = []; 
array[key1][key2] = 'hi'; 
1

你可以找到整洁的实现。例如,here是一种方法,这是一个功能产生用于行,然后阵列,创建一个数组为每列(可在其它方式anidated,但是...)

var sDataArray=MultiDimensionalArray(7,2); 
//alert(sDataArray[0][0]); 
function MultiDimensionalArray(iRows,iCols) 
{ 
var i; 
var j; 
    var a = new Array(iRows); 
    for (i=0; i < iRows; i++) 
    { 
     a[i] = new Array(iCols); 
     for (j=0; j < iCols; j++) 
     { 
      a[i][j] = ""; 
     } 
    } 
    return(a); 
} 

事情是,你就是不能像PHP那样工作。必须以他们真正的方式对待它们:数组(数组(数组(数组))的数组。 祝你好运。

2

JavaScript与key1key2的尺寸未定义有关。要解决此问题,这些都是变化,你可以做:

var key1 = 1; 
var key2 = 1; 
// define "array" as an empty array: 
var array = []; 
// define "array[key1] as an empty array inside that array 
// (your second dimension): 
array[key1] = []; 
array[key1][key2] = 'hi'; 

PHP确实有些神奇的 - 你可以简单地提供2个键和PHP“知道你是什么意思”,将定义$key1$key2尺寸,而不考虑它。请参阅:PHP: arrays如果$ arr尚不存在,它将被创建,所以这也是创建数组的另一种方法。要更改某个值,请使用其键为该元素指定一个新值。

JavaScript要求您更清楚地了解数组创建。