Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2016, 18:22
Новичок на форуме
Отправить личное сообщение для Sergey69 Посмотреть профиль Найти все сообщения от Sergey69
 
Регистрация: 10.08.2016
Сообщений: 2

Сравнение двух объектов
Доброго времени суток! Глупый вопрос, но все же интересно, как сделать что alert("Неверно"); не выводился столько раз сколько элементов в объекте? Не понимаю от чего так происходит. Подскажите пожалуйста как исправить данную ошибку?
function test () {
    var secret = {
        secret1 : "1+1",
        secret2 : "2+2",
        secret3 : "3+3"
    };

    var answer = {
        answer1 : 2,
        answer2 : 4,
        answer3 : 6
    };

    var otvet, countYes = 0, countNo = 3;

    for (var keyS in secret) {
        otvet = prompt(secret[keyS]);
        for(var keyA in answer) {
            if (otvet == answer[keyA]) {
                alert("Верно");
                countYes++;
                countNo--;
            } else alert("Неверно");
        }
    }
    alert("Верных ответов: " + countYes);
    alert("Неверных ответов: " + countNo);

}
test();

Последний раз редактировалось Sergey69, 10.08.2016 в 18:25.
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2016, 18:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Sergey69
for(var keyA in answer)
Sergey69,
function test () {
    var secret = {
        secret1 : "1+1",
        secret2 : "2+2",
        secret3 : "3+3"
    };

    var answer = {
        secret1 : 2,
        secret2 : 4,
        secret3 : 6
    };

    var otvet, countYes = 0, countNo = 3;

    for (var keyS in secret) {
        otvet = +prompt(secret[keyS]);

            if (otvet == answer[keyS]) {
                alert("Верно");
                countYes++;
                countNo--;
            } else alert("Неверно");

    }
    alert("Верных ответов: " + countYes);
    alert("Неверных ответов: " + countNo);

}
test();
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2016, 18:39
Новичок на форуме
Отправить личное сообщение для Sergey69 Посмотреть профиль Найти все сообщения от Sergey69
 
Регистрация: 10.08.2016
Сообщений: 2

Спасибо за помощ!
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2016, 20:05
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Почему сравнение не работает?

Ведь если в объект добавить valueOf, то знаки сравнений должны работать

https://jsfiddle.net/uhz6v689/
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2016, 20:21
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

DivMan, в первом случае - потому что если сравниваются переменные одного типа - никакого приведения типов не происходит. Хочешь сравнить как числа - либо сравнивай с числом, либо приводи к числу заранее.
Во втором случае - потому что после приведения типов(< и > подразумевает именно числа как аргументы, а потому приводит к числам) оба значения равны 22.
И харэ давать ссылки на jsfiddle, для таких простых вещей здесь есть [js run][/js].
__________________
29375, 35

Последний раз редактировалось Aetae, 04.11.2016 в 20:49.
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2016, 20:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Aetae, можно txt тег использовать
[JS run][/JS]

Последний раз редактировалось рони, 04.11.2016 в 20:45.
Ответить с цитированием
  #7 (permalink)  
Старый 04.11.2016, 20:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

Сообщение от рони Посмотреть сообщение
Aetae, можно txt тег использовать
[JS run][/JS]
Да я уж многие коды на память помню. Забыл # поставить.)
А теги добавляют некрасивый перенос строки.))
__________________
29375, 35
Ответить с цитированием
  #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)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение объектов Cepin Общие вопросы Javascript 24 21.03.2016 12:09
Сравнение двух текстов tsigel Общие вопросы Javascript 27 27.08.2013 17:52
Создание своей библиотеки. Создание двух одинаковых объектов. Как избежать? IDCh Javascript под браузер 2 31.10.2012 12:53
Сравнение двух строк drac0Sha Общие вопросы Javascript 17 20.08.2012 19:45
Как найти точки соприкосновения двух объектов в RaphaelJS Fatalityap Библиотеки/Тулкиты/Фреймворки 3 03.08.2012 16:33