Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   ассоциативный массив из JSON (https://javascript.ru/forum/events/58423-associativnyjj-massiv-iz-json.html)

Trippal 21.09.2015 12:06

ассоциативный массив из JSON
 
обыскал весь интернет. Так и не нашел что-нибудь по своему вопросу.
есть массив в файле 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
    }
  ]
}

Как мне сделать ассоциативный массив, на странице, чтобы в дальнейшем мне можно было оперировать объектами не на прямую прописывать каждое свойство, а обращаться к ассоциативному массиву(своеобразно универсальному массиву), который в свою очередь будет получать свойства из файла JSON?

Т.е. нужно, чтобы страница прочитала массив файла json и организовала пары ключей, чтобы дальше уже пользоваться только ассоциативным массивом для формирования функций различного характера, при этому не терять объекты из массива.

var associatedlayers = (
data.layercodename = layercodename,
data.layername = layername,
etc.):write:

laimas 21.09.2015 12:49

В JS нет ассоциативных массивов. У вас есть объект - свойство, это ключ считайте ключ ассоциативного массива. А так var associatedlayers = (
data.layercodename = layercodename, data.layername = layername, etc.), кроме ошибки ничего не получить.

Trippal 21.09.2015 12:57

в этом случае, как тогда действовать?
я просто не знаю, как написать это...
универсальный объект для объектов JSON

laimas 21.09.2015 13:17

Какой еще универсальный объект? У вас есть массив объектов "layers", получить его свойства, это layers[индекс_массива].имя_свойства.

Trippal 21.09.2015 13:52

var layers[value.layercodename] = L.tileLayer(value.pathto, {attribution: value.layername});
control.addBaseLayer(value.layername, layers[value.layercodename]);

проблема с этим

laimas 21.09.2015 14:54

У вас есть массив объектов "layers"... - что это означает? Что есть такое - value.layercodename?


Часовой пояс GMT +3, время: 15:18.