Created
September 12, 2012 08:36
-
-
Save asci/3705266 to your computer and use it in GitHub Desktop.
Сравнение моделей
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Если модели не равны — возвращается false | |
public static function isModelAndDataEquals(model:BaseModel, data:*):Boolean { | |
var res:Boolean, | |
i:int; | |
for (var prop:String in model) { | |
if (model.hasOwnProperty(prop)) { | |
if (data.hasOwnProperty(prop)) { | |
// Если модель | |
if (model[prop] is BaseModel) { | |
res = BaseModel.isModelAndDataEquals(model[prop], data[prop]); | |
if (!res) { | |
return false; | |
} | |
} | |
// Если вектор моделей | |
if (model[prop] is Vector) { | |
// Не совпадает длина векторов | |
if ((model[prop] as Vector).length != data[prop].length) { | |
return false; | |
} | |
// Убеждаемся, что там точно модели и по циклу их сравниваем | |
if ((model[prop] as Vector).length && (model[prop] as Vector)[0] is BaseModel) { | |
for (i = 0; i < (model[prop] as Vector).length; i++) { | |
res = BaseModel.isModelAndDataEquals(model[prop][i], data[prop][i]); | |
if (!res) { | |
return false; | |
} | |
} | |
} | |
} | |
if (model[prop] is Array) { | |
// Не совпадает длина массивов | |
if ((model[prop] as Array).length != data[prop].length) { | |
return false; | |
} | |
// Сверяем содержимое элементов массива | |
if ((model[prop] as Array).length) { | |
for (var i:int = 0; i < (model[prop] as Array).length; i++) { | |
if (!model[prop][i] != data[prop][i]) { | |
return false; | |
} | |
} | |
} | |
} | |
// Если простое свойство | |
if ((typeof model[prop] == 'string') || (typeof model[prop] == 'number')) { | |
if (data[prop] != model[prop]) { | |
return false; | |
} | |
} | |
} | |
} | |
} | |
return true; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment