 
			
				26.01.2016, 11:05
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.04.2015 
					
					
					
						Сообщений: 26
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				получить объект из многоуровневого объекта по значению или ключу
			 
			
		
		
		
		Добрый день, уважаемые форумчане! 
есть объект типа:
 
var options = {
     key1:value1,
     key2:value2,
     key3:{
              key31:value31,
              key32:value32
     },
     key4:{
              key41:value41,
              key42:value42
     }
}
вот такой образец объекта. 
Итак, необходимо сказать компьютеру: 
верни мне объект из объекта options значение которого равно "value1" из первой пары ключ/значение
 
я несколько раз пытался сделать через двойной  тулуп луп с continion, но пока не получается и я не представляю, как написать такой код. 
Подскажите пожалуйста, может кто-нибудь знает.
 
Заранее, спасибо!  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Trippal, 26.01.2016 в 11:11.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.01.2016, 11:26
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Trippal, не совсем понятно условие задачи ...
  
var options = {
     key1:"value1",
     key2:"value2",
     key3:{
              key31:"value31",
              key32:"value32"
     },
     key4:{
              key41:"value41",
              key42:"value42"
     }
}
function fn(obj, value)
{
  var elem = null;
  Object.keys(obj).forEach(function (key) {
	if(typeof obj[key] == "object") elem = fn(obj[key], value);
    else if (obj[key] == value) elem = obj;
});
return elem
}
var a = fn(options,"value42")
alert(JSON.stringify(a));
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.01.2016, 11:46
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.04.2015 
					
					
					
						Сообщений: 26
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var options = {
        service:"Open Street Map",
        drawStyleOptions : {
            color: "blue",
            weight: 1,
            opacity: 0.65,
        },
        osmSearchOptions:{
            name: "Oper Street Map",
            url: "http://nominatim.openstreetmap.org/search.php?",
            urlOptions:{
                q: "",
                format:"json",
                limit:10
            }
        },
        yandexSearchOptions:{
            name: "Yandex",
            url: "https://geocode-maps.yandex.ru/1.x/?",
            urlOptions:{
                geocode:"",
                format:"json"
            }
        },
        googleSearchOptions:{
            name: "Google",
            url: "https://maps.googleapis.com/maps/api/geocode/json?",
            urlOptions:{
                address: ""
                limit:10
            }
        }
    };
"дай мне объект из объекта options, [key]name, которого равно options.service" 
в моем случае - это дай мне объект со значением ключа name "Open Street Map" и соответственно получаю osmSearchOptions, 
если options.service меняется на "Google", я получаю googleSearchOptions,
 
спасибо за предыдущий ответ, но возвращает null  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.01.2016, 12:02
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Поиск в обьекте
			 
			
		
		
		
		Trippal,
  
var options = {
        service:"Open Street Map",
        drawStyleOptions : {
            color: "blue",
            weight: 1,
            opacity: 0.65,
        },
        osmSearchOptions:{
            name: "Oper Street Map",
            url: "http://nominatim.openstreetmap.org/search.php?",
            urlOptions:{
                q: "",
                format:"json",
                limit:10
            }
        },
        yandexSearchOptions:{
            name: "Yandex",
            url: "https://geocode-maps.yandex.ru/1.x/?",
            urlOptions:{
                geocode:"",
                format:"json"
            }
        },
        googleSearchOptions:{
            name: "Google",
            url: "https://maps.googleapis.com/maps/api/geocode/json?",
            urlOptions:{
                address: "",
                limit:10
            }
        }
    };
function fn(obj, value)
{
  var elem = null;
  Object.keys(obj).forEach(function (key) {
	if(typeof obj[key] == "object") {var a = fn(obj[key], value); a && (elem = a)}
    else if (obj[key] == value) elem = obj;
});
return elem
}
var a = fn(options,"Oper Street Map")
alert(JSON.stringify(a));
a = fn(options,"Google")
alert(JSON.stringify(a));
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось рони, 26.01.2016 в 12:27.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.01.2016, 12:03
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Trippal, 
 ваш пост 3 -- строка 29    
выше новая функция поиска  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.01.2016, 12:20
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.04.2015 
					
					
					
						Сообщений: 26
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Спасибо большущее! 
и прошу прощения за запятую, не углядел при удалении, там много-много параметров ещё, и чтобы не загрязнять суть вопроса удалил их) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |