Показать сообщение отдельно
  #8 (permalink)  
Старый 05.11.2016, 11:08
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Нормальным ли я способом сделал?

Свойства объектов разном порядке

var objA = {
     prop1: 'value1',
    prop2: 'value2',
    prop3: 'value3',
    prop4: {
        subProp1: 'sub value1',
        subProp2: {
            subSubProp1: 'sub sub value1',
            subSubProp2: [1, 2, {prop2: 1, prop: 2}, 4, 5]
        }
    },
    prop5: 1000,
    prop6: new Date(2016, 2, 10)
}

var objB = {
    prop5: 1000,
    prop3: 'value3',
    prop1: 'value1',
    prop2: 'value2',
    prop6: new Date('2016/03/10'),
    prop4: {
        subProp2: {
            subSubProp1: 'sub sub value1',
            subSubProp2: [1, 2, {prop2: 1, prop: 2}, 4, 5]
        },
        subProp1: 'sub value1'
    }
};


function foo(ob1, ob2){

var res1 = [];
var res2 = [];

	for(var prop in ob1){
			res1.push(prop + ':' + ob1[prop])
		
		if(ob1[prop] == '[object Object]'){
			
			for(key in ob1[prop]){
				res1.push(key + ':' + ob1[prop][key])
				
				if(ob1[prop][key] == '[object Object]'){
					for(kl in ob1[prop][key]){
						res1.push(kl + ':' + ob1[prop][key][kl])
						
					}
				}
			}
		}
		
	}
	
		for(var prop in ob2){
			res2.push(prop + ':' + ob2[prop])
		
		if(ob2[prop] == '[object Object]'){
			
			for(key in ob2[prop]){
				res2.push(key + ':' + ob2[prop][key])
				
				if(ob2[prop][key] == '[object Object]'){
					for(kl in ob2[prop][key]){
						res2.push(kl + ':' + ob2[prop][key][kl])
						
					}
				}
			}
		}
		
	}
	
	
	res1.sort()
	res2.sort()
	
	var obj1 = res1.join()
	var obj2 = res2.join()
	
	console.log(obj1)
	console.log(obj2)
	
	if(obj1 == obj2){
		return alert('Объекты равны')
	}
	
	else{
		return alert('Объекты не равны')
	}
}

foo(objA, objB)
Ответить с цитированием