2010-09-30 27 views
17

Tôi có một hộp văn bản tự động hoàn tất để người dùng có thể nhập mã mục vào và cần tìm hiểu số id của mã mặt hàng đó trong javascript.Cú pháp hiệu quả để điền một mảng liên kết javascript

Một mảng kết hợp là cách tôi sẽ tưởng tượng nó nên được thực hiện, nhưng sau có vẻ hơi dài hơi và tôi hy vọng ai đó có một cách tốt hơn để làm điều đó hay viết tắt của những gì tôi có dưới đây:

var itemIds = new Array(); 
itemIds["item1"] = 15; 
itemIds["item2"] = 40; 
itemIds["item3"] = 72; 
... 

function getItemId(code){ 
    return itemIds[code]; 
} 
+1

Không cần khai báo 'itemIds' làm đối tượng' Array'. Sau khi tất cả các bạn chỉ cần thêm thuộc tính cho một đối tượng. Vì đối tượng JavaScript có thể được xem như là một 'container cho cặp khóa-giá trị', bất kỳ đối tượng JavaScript nào cũng sẽ làm. – smwikipedia

Trả lời

21

Những gì bạn đang làm không phải là một mảng - đó là một đối tượng (các đối tượng trong JavaScript là tương đương-ish của mảng kết hợp trong PHP).

Bạn có thể sử dụng đối tượng JavaScript cú pháp theo nghĩa đen:

var itemIds = { 
    item1: 15, 
    item2: 40, 
    item3: 72 
}; 

thành viên đối tượng JavaScript có thể được truy cập thông qua ký hiệu dấu chấm hoặc mảng phụ, như vậy:

itemIds.item1; 
itemIds['item1']; 

Bạn sẽ cần phải sử dụng thứ hai nếu bạn đã có tên thành viên dưới dạng chuỗi.

+0

Wow đây là một câu trả lời tuyệt vời, cảm ơn bạn đã cung cấp các ví dụ. – Jake

2

Hãy thử sử dụng ký hiệu Literal Object để xác định tra cứu của bạn như thế này:

var itemIds = { 
    "item1" : 15, 
    "item2" : 40 
    ... 
}; 

Tiếp cận vẫn phải làm việc như thế này:

var item1Value = itemIds["item1"]; 
+2

Arg ... Tôi không đủ nhanh. – some

+1

Về mặt kỹ thuật, JSON là việc sử dụng đối tượng JavaScript và mảng chữ để trao đổi dữ liệu - những gì bạn đang hiển thị là một đối tượng theo nghĩa đen. – Skilldrick

+0

Ồ, tôi giả định từ "Ký hiệu" bit trong tên mà nó xác định cú pháp. Đối tượng Literal nó được! –

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