2013-02-21 32 views
5

tôi có một đối tượng mà tôi xây dựng ra động ví dụ:hoạt Javascript để phản đối sử dụng khóa mảng/giá trị cặp

obj = {}; 
obj.prop1 = 'something'; 
obj.prop2 = 'something'; 
obj.prop3 = 'something'; 

Với rằng bây giờ tôi có một nhu cầu để có một mục từ một mảng và sử dụng nó để xác định cả hai tương đương với "propX" và giá trị của nó

tôi nghĩ nếu tôi đã làm một cái gì đó giống như

obj.[arr[0]] = some_value; 

đó, mà sẽ làm việc cho tôi. Nhưng tôi cũng nghĩ rằng nó sẽ không phải là lỗi tôi nhận được là một lỗi cú pháp. "Thiếu tên sau toán tử". Mà tôi hiểu nhưng tôi không chắc chắn làm thế nào để làm việc xung quanh nó. Mục tiêu cuối cùng là gì, là sử dụng giá trị của mảng item làm tên thuộc tính cho đối tượng, sau đó xác định thuộc tính đó với một biến khác cũng được truyền. Câu hỏi của tôi là, làm thế nào tôi có thể đạt được nó để phần phụ cho đối tượng sẽ được coi là

obj.array_value = some_variable; 
+0

bản sao có thể có của [Tên thuộc tính động] [http://stackoverflow.com/questions/4244896/dynamic-object-property-name) –

+0

Felix, tìm tốt đẹp. Tôi nghĩ rằng điều đó tạo thành bài viết của tôi ở đây như là một dupe. Chỉ cần không tìm thấy nó vì tôi không nghĩ ra một cụm từ tốt hơn để tìm kiếm. Cảm ơn – chris

+0

Không phải lo lắng. Đó là một câu hỏi khá phổ biến trong thực tế. Bạn có thể tìm thấy q/a của tôi ở đây cũng thông tin: http://stackoverflow.com/questions/11922383/i-have-a-nested-data-structure-json-how-can-i-access-a-specific-value . –

Trả lời

8

Xóa dấu chấm. Sử dụng

obj[arr[0]] = some_value; 

Tôi khuyên bạn nên đọc Working with objects từ MDN.

+0

sẽ thêm vào đối tượng một mảng hoặc để nó làm đối tượng? – chris

+0

@chris: Nó sẽ thêm 'some_value' vào đối tượng và tên thuộc tính sẽ là giá trị của' arr [0] '. Có lẽ bạn * ký hiệu khung * là bằng cách nào đó liên quan đến mảng, nhưng nó không phải. Nó chỉ là một cách khác nhau để truy cập các thuộc tính. –

+0

Tôi nên cung cấp nó trong ví dụ. Nhưng có một mảng được mã hóa cứng hoạt động như một chỉ mục mà chúng ta có thể nối thêm theo thời gian, vì vậy thay vì tìm kiếm trong tương lai cho tất cả các tham chiếu đến những gì mảng cung cấp trong ngữ cảnh, chúng ta có thể thay đổi nó ở cấp mảng chứ không phải toàn bộ mã căn cứ. – chris

3

Bạn có thể thử

obj[arr[0]] = some_value; 

ví dụ: thả dot :)

3

Bạn đang gần đúng, nhưng bạn chỉ cần tháo. từ dòng:

obj. [arr [0]] = some_value;

nên đọc

obj [arr [0]] = some_value;

+3

@Amareswar: Nhưng nó sẽ là sai. Nó sẽ cố gắng thiết lập phần tử đầu tiên của mảng được lưu trữ trong 'obj.arr'. –

+0

@FelixKling xin lỗi tôi đã nhận được câu hỏi sai – Amareswar

Các vấn đề liên quan