Tôi có một mảng đối tượng. Mỗi đối tượng có một thuộc tính được gọi là tên. Tôi muốn loại bỏ một đối tượng một cách hiệu quả với một tên cụ thể từ mảng đó. Đây có phải là cách tốt nhất?Cách hiệu quả hơn để xóa phần tử khỏi mảng trong Actionscript 3
private function RemoveSpoke(Name:String):void {
var Temp:Array=new Array;
for each (var S:Object in Spokes) {
if (S.Name!=Name) {
Temp.push(S);
}
}
Spokes=Temp;
}
Một điều quan trọng về giải pháp này: nó sẽ chỉ hoạt động nếu mỗi "tên" là duy nhất. Nếu có nhiều đối tượng có cùng tên thì bảng tra cứu sẽ thất bại, ít nhất nếu nó được xây dựng như thế này. – Quasimondo
thú vị ... vì vậy về cơ bản bạn có hai danh sách với dữ liệu trùng lặp ... nói chung sẽ tốt hơn nếu chỉ sử dụng bảng tra cứu và phân phối với mảng cho các tình huống này? thực hiện điều này chỉ vì đối tượng có thuộc tính 'name' hoặc' indexOf' tìm kiếm trong mọi giá trị thuộc tính của đối tượng? – mga
Có, nếu bạn không cần mảng cho các mục đích khác (như phân loại hoặc truy cập các phần tử theo chỉ số) trong trường hợp này bạn chỉ có thể sử dụng bảng tra cứu. indexOf tìm các phiên bản của đối tượng. Trong trường hợp này, nó không sử dụng "tên" ở tất cả để so sánh. Tên được sử dụng làm băm trong bảng tra cứu. – Quasimondo