2012-01-06 37 views
6

Về cơ bản tôi có một vòng lặp incrementing i, và tôi muốn làm điều này:Làm cách nào để tạo một mảng kết hợp javascript {} với các tên khóa động?

var fish = { 'fishInfo[' + i + '][0]': 6 }; 

tuy nhiên nó không hoạt động.

Bất kỳ ý tưởng nào về cách thực hiện việc này? Tôi muốn kết quả là

fish is { 'fishInfo[0][0]': 6 }; 
fish is { 'fishInfo[1][0]': 6 }; 
fish is { 'fishInfo[2][0]': 6 }; 

, vv

Tôi đang sử dụng $ .merge để kết hợp chúng nếu bạn nghĩ tại sao trên trái đất được ông làm điều đó :)

+2

Điều gì xảy ra với (a) chỉ tạo mảng; hoặc (b) sử dụng vòng lặp để tạo bộ đếm? Bạn đang gặp phải vấn đề gì? – Marcin

Trả lời

9

Khai báo đối tượng trống, sau đó bạn có thể sử dụng cú pháp mảng để gán thuộc tính cho động đó.

var fish = {}; 

fish[<propertyName>] = <value>; 
+1

Chúc mừng sắp xếp nó. Và tôi cần $ .extend thay vì $ .merge :) – NibblyPig

2

Đối với bất kỳ công cụ năng động với đối tượng , bạn cần ký hiệu khung .

var fish = { }; 

fish[ 'fishInfo[' + i + '][0]' ] = 6; 
0

Mảng đa chiều trong javascript được tạo bằng cách lưu mảng trong mảng.

Hãy thử:

var multiDimArray = []; 
for(var x=0; x<10; x++){ 
    multiDimArray[x]=[]; 
    multiDimArray[x][0]=6; 
} 

Fiddle exampe: http://jsfiddle.net/CyK6E/

5

Làm điều này:

var fish = {}; 
fish['fishInfo[' + i + '][0]'] = 6; 

Nó hoạt động, bởi vì bạn có thể đọc & ghi vào đối tượng sử dụng dấu ngoặc ký hiệu vuông như thế này:

my_object[key] = value; 

và điều này:

alert(my_object[key]); 
Các vấn đề liên quan