2012-07-09 23 views
11

Tôi có câu hỏi về từ điển của Javascript. Tôi có từ điển trong đó cặp khóa-giá trị được thêm động như sau:Cách tìm giá trị sử dụng khóa trong từ điển javascript

var Dict = [] 
var addpair = function (mykey , myvalue) [ 
    Dict.push({ 
    key: mykey, 
    value: myvalue 
    }); 
} 

Tôi sẽ gọi hàm này và chuyển các khóa và giá trị khác nhau. Nhưng bây giờ tôi muốn lấy giá trị của mình dựa trên khóa nhưng tôi không thể làm như vậy. Bất cứ ai có thể cho tôi biết cách chính xác?

var givevalue = function (my_key) { 
    return Dict["'" +my_key +"'"]   // not working 
    return Dict["'" +my_key +"'"].value // not working 
} 

Như chính của tôi là một biến, tôi không thể sử dụng Dict.my_key

Cảm ơn.

Trả lời

17

Mảng trong JavaScript không sử dụng chuỗi làm khóa. Có thể bạn sẽ thấy rằng giá trị là có, nhưng khóa là một số nguyên.

Nếu bạn thực hiện Dict thành một đối tượng, điều này sẽ làm việc:

var Dict = {}; 
var addpair = function (my_key, my_value) { 
    Dict[my_key] = my_value; 
} 
var givevalue = function (my_key) { 
    return Dict[my_key]; 
} 

Biến my_key đã là một chuỗi, do đó bạn không cần thêm dấu ngoặc kép.

+0

Xin chào, tôi có thể làm ngược lại bằng cách tìm khóa sử dụng giá trị –

+0

Không dễ dàng như vậy. Bạn sẽ cần phải làm một vòng lặp, cố gắng tất cả các giá trị trong đối tượng cho đến khi bạn nhận được một trong những quyền, sau đó trở về phím đó. Vấn đề là có thể có hai giá trị giống nhau, vì vậy bạn sẽ cần phải đặt mã vào addpair() để ngăn trùng lặp. –

+0

Mảng trong Javascript * do * sử dụng chuỗi làm khóa và bất kỳ thứ gì bạn cố gắng sử dụng làm chỉ mục mảng sẽ bị ép buộc thành chuỗi phía sau hậu trường. Bạn có thể xác nhận điều này bằng cách tạo một đối tượng với phương thức 'toString' và sử dụng nó như là một chỉ mục mảng. Nó sẽ sử dụng bất cứ phương thức 'toString' nào được trả về. –

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