在javascript中为数组赋值

时间:2010-01-25 15:25:57

标签: php javascript

在php中你可以这样做:

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

在javascript中我试过这个:

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

但它没有用。我怎样才能在javascript中做同样的事情?

4 个答案:

答案 0 :(得分:6)

你的问题是你需要在赋值之前实例化内部数组

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

或者你可以一起做到这一切:

var array=[['hi']]

此外,除非您要更新现有元素,否则应避免分配给特定索引。上面的第一个示例将自动添加元素

array[0]=undefined;

如果你想使用特定的键,而不仅仅是索引,你应该使用字典或对象(字典和对象与javascript是一回事)

答案 1 :(得分:4)

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

例如:

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

答案 2 :(得分: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要求您更明确地创建数组。

答案 3 :(得分:1)

你可以找到整洁的实现。例如,here是一种方法,它是为行创建数组的函数,然后为每列创建一个数组(可以用其他方式进行帮助,但是......)

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那样无法处理数组。必须按照它们的实际方式对待它们:一组数组(数组(数组(数组)......))。 祝你好运。