2009-03-29 45 views

Trả lời

37
var card:Object = {name:"Tom"}; 

trace("age" in card); // return false 
trace("name" in card); // return true 

Hãy thử điều hành này: "trong"

+0

Cảm ơn Cotton, tôi chưa bao giờ biết rằng toán tử tồn tại bên ngoài vòng lặp for-each. –

+8

điều này làm cho tôi hạnh phúc, nó rất Pythonic. – Soviut

+0

Giải pháp tốt nhất từ ​​chế độ xem hiệu suất là tốt? – Rihards

1

Hãy thử điều này:

for (var key in myArray) { 
    if (key == myKey) trace(myKey+' found. has value: '+myArray['key']); 
} 
+0

Hãy nhớ sử dụng === thay vì ==, nghĩ rằng bạn có thể nhận được một lần truy cập sai theo cách khác. –

4

Cách nhanh nhất có thể là đơn giản nhất:

// creates 2 instances 
var obj1:Object = new Object(); 
var obj2:Object = new Object(); 

// creates the dictionary 
var dict:Dictionary = new Dictionary(); 

// adding the first object to the dictionary (but not the second one) 
dict[obj1] = "added"; 

// checks whether the keys exist 
var test1:Boolean = (dict[obj1] != undefined); 
var test2:Boolean = (dict[obj2] != undefined); 

// outputs the result 
trace(test1,test2); 
+1

Nhưng điều đó có hiệu quả nếu bạn không có tham chiếu đến đối tượng gốc? Bông trả lời có vẻ phù hợp hơn ở đây. –

+0

Hey, trong câu hỏi của bạn, bạn đang đề cập đến từ điển và không phải là đối tượng hoặc mảng, tôi có đúng không? Tôi đã không cố gắng "trong" nhà điều hành trong một trường hợp từ điển cho đến nay, nên được ok. LMK –

5

hasOwnPropery là một cách để bạn kiểm tra nó. Lấy ví dụ này:


var dict: Dictionary = new Dictionary(); 

// this will be false because "foo" doesn't exist 
trace(dict.hasOwnProperty("foo")); 

// add foo 
dict["foo"] = "bar"; 

// now this will be true because "foo" does exist 
trace(dict.hasOwnProperty("foo")); 
2

hasOwnProperty có vẻ là giải pháp phổ biến, nhưng đáng lưu ý là nó chỉ đề cập đến chuỗi và có thể tốn kém để gọi.

Nếu bạn đang sử dụng các đối tượng làm khóa trong Dictionary của bạn hasOwnProperty sẽ không hoạt động.

Giải pháp hiệu quả và đáng tin cậy hơn là sử dụng sự bình đẳng chặt chẽ để kiểm tra không xác định.

function exists(key:*):Boolean { 
    return dictionary[key] !== undefined; 
} 

Hãy nhớ sử dụng bình đẳng nghiêm ngặt khác mục với một giá trị null nhưng chìa khóa hợp lệ sẽ nhìn trống rỗng tức là

null == undefined // true 
null === undefined // false 

Và trên thực tế, như đã được đề cập bằng in nên hoạt động tốt quá

function exists(key:*):Boolean { 
    return key in dictionary; 
} 
Các vấn đề liên quan