javascript diziye değer atama

4 Cevap php

php böyle yapabilirdi:

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

javascript i ile bu çalıştı:

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

ama işe yaramadı. nasıl ben javascript aynı şeyi yapabilir?

4 Cevap

Senin sorunun bu değerleri atamadan önce iç dizi oluşturmaya ihtiyaç olduğunu

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

Yoksa birinde tüm yapabilirdi:

var array=[['hi']]

Ayrıca, varolan bir öğe güncelliyoruz sürece belirli endekslere atama kaçınmalısınız. Yukarıdaki ilk örnek otomatik bir unsur katacak

array[0]=undefined;

Belirli tuşları ve sadece dizinleri kullanmak istiyorsanız, sözlükler veya nesneleri (sözlükler ve nesneler i javascript aynı şey) kullanmalısınız

Dizinin key1 özelliği özelliği key2 kendisine atamak çalıştığınız anda tanımsız. Eğer bunun için değerler atama başlamadan önce aslında array[key1] bir dizi olduğunu belirtmek gerekir.

Örneğin:

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

JavaScript key1 ile sorun ve dizi tanımsız olmak key2 boyutlara sahip. Bu sorunu gidermek için, bunlar yapabilir değişiklikler şunlardır:

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 bazı büyü yapar - sadece 2 anahtarları temin edebilir ve PHP "Ne demek istediğini bilir" ve bu konuda düşünmeden $key1 ve $key2 boyutları tanımlamak olacaktır. Bakınız: PHP: arrays, If $arr doesn't exist yet, it will be created, so this is also an alternative way to create an array. To change a certain value, assign a new value to that element using its key.

JavaScript dizi yaratma konusunda daha açık olması gerekir.

Sen düzgün uygulamaları bulabilirsiniz. Örneğin, here, her sütun için bir dizi oluşturma, daha sonra satır ve bir dizi yaratmak bir fonksiyonu olan bir şekilde (diğer bir şekilde anidated olabilir, ama ...)

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);
} 

The thing is, you just can't work the arrays just like PHP ones. Must treat them the way they really are: an array of arrays (of arrays (of arrays (of arrays)...)). Good luck.