Tôi muốn kiểm tra chức năng của mình nếu đối số đã nhập của đối tượng kiểu có trống hay không. Đôi khi nó trống rỗng nhưng vẫn không rỗng, do đó tôi không thể dựa vào điều kiện rỗng. Có một số tài sản như 'chiều dài'/'kích thước' cho các đối tượng flex mà tôi có thể sử dụng ở đây. Xin vui lòng giúp đỡ. Cảm ơn trước.Để kiểm tra xem một đối tượng có trống không hoặc không
Trả lời
Nếu bạn có nghĩa là nếu một đối tượng không có thuộc tính:
var isEmpty:Boolean = true;
for (var n in obj) { isEmpty = false; break; }
Cảm ơn sự giúp đỡ, nó thực sự hữu ích nhưng chúng tôi vẫn không thể có một số phương pháp dựng sẵn như: "myObj.length"/'myObj.isEmpty' Xin cảm ơn một lần nữa. – Ashine
Bạn sẽ phải mở rộng lớp 'Object' hoặc lớp' Dictionary' để có được một phương thức "sẵn có" cho điều đó :) – Amarghosh
Có monkeypatching, nhưng ngắt cho .. trong vòng lặp, mà ... well .. . bạn biết. –
Đây là một số nghiêm trọng Hack nhưng bạn có thể sử dụng:
Object.prototype.isEmpty = function():Boolean {
for(var i in this)
if(i != "isEmpty")
return false
return true
}
var p = {};
trace(p.isEmpty()); // true
var p2 = {a:1}
trace(p2.isEmpty()); // false
wow, đó là một thủ thuật thú vị. Bạn vừa gửi cho tôi một nhiệm vụ để tìm hiểu về thành viên nguyên mẫu. Không chắc chắn làm thế nào tôi có thể sử dụng nó, nhưng nó là một chút thú vị của ruột để biết về. – JStriedl
Tôi cố gắng tránh nguyên mẫu, bởi vì trình biên dịch flex phàn nàn rất nhiều. Và tôi phải thừa nhận rằng tôi là một người nghiện tự động hoàn thành ... – sharvey
có thể kiểm tra bằng cách sử dụng 'this.hasOwnProperty (i)', trong trường hợp các thành viên nguyên mẫu khác. –
Phụ thuộc vào những gì đối tượng của bạn, hay đúng hơn là những gì bạn mong đợi nó phải có. Ví dụ, nếu đối tượng của bạn có nghĩa vụ phải chứa một số tài sản được gọi là tên mà bạn đang tìm kiếm, bạn có thể làm
if(objSomeItem == null || objSomeItem.name == null || objSomeItem.name.length == 0)
{
trace("object is empty");
}
hoặc nếu đối tượng của bạn là thực sự nghĩa vụ phải được cái gì khác, giống như một mảng bạn có thể làm
var arySomeItems = objSomeItem as Array;
if(objSomeItem == null || arySomeItems == null || arySomeItems.length == 0)
{
trace("object is empty");
}
Bạn cũng có thể sử dụng cách khác thông qua phản ánh, chẳng hạn như ObjectUtil.getClassInfo, sau đó liệt kê thông qua các thuộc tính để kiểm tra các giá trị thiết lập .... lớp này giúp đỡ:
import flash.utils.describeType;
import flash.utils.getDefinitionByName;
public class ReflectionUtils
{
/** Returns an Array of All Properties of the supplied object */
public static function GetVariableNames(objItem:Object):Array
{
var xmlPropsList:XMLList = describeType(objItem)..variable;
var aryVariables:Array = new Array();
if (xmlPropsList != null)
{
for (var i:int; i < xmlPropsList.length(); i++)
{
aryVariables.push(xmlPropsList[i][email protected]);
}
}
return aryVariables;
}
/** Returns the Strongly Typed class of the specified library item */
public static function GetClassByName($sLinkageName:String):Class
{
var tObject:Class = getDefinitionByName($sLinkageName) as Class;
return tObject;
}
/** Constructs an instance of the speicified library item */
public static function ConstructClassByName($sLinkageName:String):Object
{
var tObject:Class = GetClassByName($sLinkageName);
//trace("Found Class: " + tMCDefinition);
var objItem:* = new tObject();
return objItem;
}
public static function DumpObject(sItemName:String, objItem:Object):void
{
trace("*********** Object Dump: " + sItemName + " ***************");
for (var sKey:String in objItem)
{
trace(" " + sKey +": " + objItem[sKey]);
}
}
//}
}
Một điều cần lưu ý là bạn có thể sử dụng một vòng lặp đơn giản để kiểm tra thông qua một thuộc tính đối tượng, đó là những gì hàm dumpobject này đang làm.
Bạn cũng có thể thử:
ObjectUtil.getClassInfo(obj).properties.length > 0
Những điều tốt về nó là getClassInfo mang đến cho bạn nhiều thông tin hơn về các đối tượng, ví dụ. bạn có được tên của tất cả các thuộc tính trong đối tượng, có thể có ích.
Cảm ơn U :) Nó đã giảm nỗ lực của tôi ... – Prax
Nếu đối tượng chứa một số 'văn bản' nhưng as3 không nhận ra nó dưới dạng Chuỗi, hãy chuyển đổi thành chuỗi và kiểm tra xem nó có trống không.
var checkObject:String = myObject;
if(checkObject == '')
{
trace('object is empty');
}
Bạn có thể trực tiếp kiểm tra xem nó như sau,
var obj:Object = new Object();
if(obj == null)
{
//Do something
}
tôi lấy trộm này từ một câu hỏi tương tự liên quan đến JS. Nó yêu cầu thư viện FP 11+ hoặc JSON.as.
function isEmptyObject(obj){
return JSON.stringify(obj) === '{}';
}
- 1. kiểm tra xem NSNumber có trống không
- 2. Kiểm tra xem NumericUpDown có trống không
- 3. Kiểm tra xem BSTR có trống không
- 4. kiểm tra xem biến có trống không
- 5. Kiểm tra xem chuỗi có trống không
- 6. Django kiểm tra xem trường có trống không?
- 7. Kiểm tra xem đối tượng là một số hoặc boolean
- 8. Kiểm tra xem một mảng có trống không trong Jinja2
- 9. Cách kiểm tra xem một mảng có trống không?
- 10. Cách kiểm tra xem đối tượng JSON có trống trong PHP không?
- 11. Java: Cách kiểm tra xem đối tượng có rỗng không?
- 12. Làm thế nào để kiểm tra xem một biến hoặc đối tượng là không xác định?
- 13. javascript: Kiểm tra nếu một đối tượng không có tài sản hoặc nếu một bản đồ/kết hợp mảng trống
- 14. Kiểm tra xem thuộc tính CoreData có trống không
- 15. VB Kiểm tra xem int có trống không
- 16. Kiểm tra xem hộp thư có trống không? trong erlang
- 17. Cách kiểm tra xem UITextField có trống không?
- 18. Kiểm tra xem danh sách có trống không với LINQ
- 19. Kiểm tra xem $ _POST-value có trống không
- 20. Cách kiểm tra xem tệp có trống không?
- 21. Kiểm tra xem một đối tượng có tồn tại
- 22. Cách kiểm tra xem động có trống không.
- 23. Kiểm tra xem có phải là một đối tượng
- 24. PHP & MySql kiểm tra xem bảng có trống không
- 25. JQuery Kiểm tra xem đầu vào có trống không kiểm tra tải không?
- 26. Kiểm tra xem hộp nhập liệu có trống không
- 27. Làm cách nào để kiểm tra xem một đối tượng có được phát hành không?
- 28. Python - Kiểm tra xem tệp có trống hay không
- 29. cách kiểm tra xem trường tệp có trống không?
- 30. Kiểm tra xem thư mục có trống không
Tôi đã gắn thẻ lại câu hỏi của bạn với bộ sưu tập. Câu hỏi của bạn hơi mơ hồ, có lẽ bạn có thể làm rõ nó để có được nhiều câu trả lời tốt hơn. Đang sử dụng một đối tượng Object làm mảng kết hợp? Nếu bạn cần đếm, có thể bạn sử dụng lớp Array thay thế. Nếu bạn mô tả ngữ cảnh tốt hơn một chút thì sẽ dễ trả lời hơn. –
Nếu bạn sử dụng một mảng kết hợp, bạn nhận được chính xác điều tương tự như một đối tượng. Thuộc tính độ dài sẽ luôn trả về 0 bất kể cách bạn điền các phím. – sharvey
Tôi có nghĩa là không sử dụng một mảng kết hợp, nhưng thay đổi mã để sử dụng một mảng bình thường. Một mảng kết hợp cho biết rằng bạn biết giá trị nào được lưu trữ và bạn sẽ không cần phải tính giá trị đó. Nhưng thật khó để nói mà không có chi tiết hơn. –