Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.09.2015, 13:10
Интересующийся
Отправить личное сообщение для Trippal Посмотреть профиль Найти все сообщения от Trippal
 
Регистрация: 28.04.2015
Сообщений: 26

список свойств из json(чуть сложнее тривиальной)
Добрый день уважаемые форумчане, подскажите пожалуйста, как получить список из следующего куска с внесением этих списков в функции:


Код:
{"layers":
	[
		{ 
			"layercodename":"osm",
			"layername": "Open Street Map",
			"pathto":"'http://{s}.tile.osm.org/{z}/{x}/{y}.png'",
			"layertype":"basemap",
			"layertypefunction":"ltilelayer"
		},
		{ 
			"layercodename":"olen",
			"layername": "Треки оленей",
			"pathto":"rerere.json",
			"layertype":"overlay",
			"layertypefunction":"casual",
			"geometry":"polyline",
			"color": "#000",
			"width": 1
		}
	]
}

на выходе хочется получить:
задача 1)
если "layertype":"basemap", то запихать в
var baseMaps = {
"layercodename"+':'+ "layername"
}
если "layertype":"overlay", то в
var overlayMaps = {
"layercodename"+':'+ "layername"
}

задача 2)
а так же проинициализировать объекты,
грубо говоря, если есть слой с "layertypefunction":"ltilelayer", то выполнить его инициализацию следующим образом
L.tileLayer('pathto', {}).addTo(map);
и если
"layertypefunction":"casual"
то произвести инициализацию уже другим образом:
L.geoJson("layercodename", {style: {color:"color", width:"width"}}).addTo(map);

Просто что-то тяжело дается вытащить свойства
Ответить с цитированием
  #2 (permalink)  
Старый 17.09.2015, 14:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Для того чтобы если "layertype":"basemap", то..., а если если "layertype":"overlay", то..., то либо объект "layers" содержит в себе только один набор свойств, а не два как в примере, либо должна быть иная логика.
Ответить с цитированием
  #3 (permalink)  
Старый 17.09.2015, 15:45
Интересующийся
Отправить личное сообщение для Trippal Посмотреть профиль Найти все сообщения от Trippal
 
Регистрация: 28.04.2015
Сообщений: 26

Сообщение от laimas Посмотреть сообщение
Для того чтобы если "layertype":"basemap", то..., а если если "layertype":"overlay", то..., то либо объект "layers" содержит в себе только один набор свойств, а не два как в примере, либо должна быть иная логика.
предполагаю, что будет функция SWITCH, а в ней перебор вариантов и реализация инициализации в зависимости от параметров
Ответить с цитированием
  #4 (permalink)  
Старый 17.09.2015, 15:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Не обязательно switch, не в этом дело. Вопрос поставлен или/или, в наборов свойств 2. Что это означает - 1) обойти эти наборы проверив условия в них или 2) в каком то из наборов проверить условия?

Если первое, обойти циклом эти два набора проверяя необходимые свойства, если второе, берите необходимый набор. Например, если имя этого объекта равно obj, то свойство первого условия первого первого набора, это obj.layers[0].layertype.
Ответить с цитированием
  #5 (permalink)  
Старый 17.09.2015, 17:49
Интересующийся
Отправить личное сообщение для Trippal Посмотреть профиль Найти все сообщения от Trippal
 
Регистрация: 28.04.2015
Сообщений: 26

Сообщение от laimas Посмотреть сообщение
Не обязательно switch, не в этом дело. Вопрос поставлен или/или, в наборов свойств 2. Что это означает - 1) обойти эти наборы проверив условия в них или 2) в каком то из наборов проверить условия?

Если первое, обойти циклом эти два набора проверяя необходимые свойства, если второе, берите необходимый набор. Например, если имя этого объекта равно obj, то свойство первого условия первого первого набора, это obj.layers[0].layertype.
несколько раз внимательно прочитал...не понял)
Ответить с цитированием
  #6 (permalink)  
Старый 17.09.2015, 17:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Чего именно? Ваш объект, это массив объектов (то есть два набора свойств), нужно в каждом проверить условия (значения свойств)? Ну так обходом в цикле получайте их и проверяйте. Как получить значение свойства layertype первого набора показано.
Что такое цикл думаю известно, что еще нужно?
Ответить с цитированием
  #7 (permalink)  
Старый 17.09.2015, 18:07
Интересующийся
Отправить личное сообщение для Trippal Посмотреть профиль Найти все сообщения от Trippal
 
Регистрация: 28.04.2015
Сообщений: 26

спасибо, буду разбираться!)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двойной динамический список. oneplus Элементы интерфейса 17 14.08.2015 22:42
Выдать список всех свойств указанного при вводе объекта указанного фрейма flasher167 Общие вопросы Javascript 11 05.04.2013 08:14
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 13:20