Доступ к объекту объекта

#javascript #for-loop #object

Вопрос:

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

Здесь я хочу получить все значения data in options . Пожалуйста, посмотрите на консоль.войдите в систему, ответьте на скриншот ниже.

Вот js:

 var map = new Datamap({
  scope: "fra",
  element: document.getElementById("map-france"),
  responsive: true,
  fills: {
    defaultFill: "#EDE8D6",
    "1-50": color_dept[4],
    "51-100": "#EDE8D6",
    "101-150": "#E2DABF",
    "151-200": "#CEC191",
    "201-300": "#BCAE7C",
    "301-400": "#9D893E",
    "401-": "#827131",
  },
  data: {
    YV: {
      fillKey: "#EDE8D6",
    },
    AM: {
      fillKey: "51-100",
    },
  },
  geographyConfig: {
    popupTemplate: function (geo, data) {
      for (const val of uniqueValues) {
        if (geo.properties.name == val) {
          return [
            '<div class="hoverinfo"><strong>',
            val,
            "<br/>",
            dataValues.filter((v) => v == val).length,
            " parrainages",
            "</strong></div>",
          ].join("");
        }
      }
    },
    hideAntarctica: true,
    hideHawaiiAndAlaska: false,
    borderWidth: 1,
    borderOpacity: 1,
    borderColor: "#D2D3B5",
    popupOnHover: true, // True to show the popup while hovering
    highlightOnHover: true,
    highlightFillColor: "#1E2382",
    highlightBorderColor: "#FFFFFF",
    highlightBorderWidth: 1,
    highlightBorderOpacity: 1,
  },
  setProjection: function (element) {
    var projection = d3.geo
      .mercator()
      .center([2.454071, 46.279229])
      .rotate([0, 0])
      .scale(1700)
      .translate([350, 225]);
    var path = d3.geo.path().projection(projection);

    return {
      path: path,
      projection: projection,
    };
  },
});


Object.entries(map).map((item) => {
  console.log("item 1 : ", item);
});
 

введите описание изображения здесь

Комментарии:

1. вам не нужно использовать map() , можете ли вы попробовать войти map.data в систему ?

2. Что такое а Datamap ?

3. @Rojo это плагин для карт

4. Не могли бы вы предоставить ссылку на репозиторий github для этого или что-то в этом роде?

5. @AzizaKasenova, это не определено : Object.entries(map).map((item) => { console.log("item 1 : ", map.data); });

Ответ №1:

Экс.

 const mapExample = new Map()

mapExample.set("test", 
{"nestedObj":{"newObject":"new Obj value"}})
 

теперь сопоставьте это, и вы получите массив с объектом верхнего уровня «тест».

чтобы получить значение вложенного значения «newObject»:

 Object.entries(mapExample.get("test")).map(i=> console.log(i[1].newObject))
 

или

 Object.entries(mapExample.get("test")).map(i=> {
  let [key,value] = i
  console.log(key,value)
});
 

можете скопировать и опубликовать это в консоли Chrome и повозиться с ним, чтобы увидеть разные результаты.

но ключевой путь-это объект.записи возвращают массив вашего объекта в порядке [«ключ»:»значение»].

Комментарии:

1. это дает мне ошибку : неучтенная ошибка типа: map.get не является функцией

2. Возможно, было плохой идеей использовать для вашего ответа то же имя переменной Map , что и для существующей Datamap переменной операции.

3. @HereticMonkey, спасибо за ваш комментарий, я изменил его, но ошибка все еще здесь : Неперехваченная ошибка типа: mapdata.get не является функцией Object.entries(mapdata.get("options")).map((i) => { let [key, value] = i; console.log(key, value); });

4. Значит, в коде что-то не так. Возможно Map , был переопределен каким-то другим кодом и больше не ссылается на стандартный встроенный Map объект, у которого есть get метод @MeryemACHEMLAL.

5. @MeryemACHEMLAL, в примере я использовал структуру данных карты, потому что предположил, что ваш пользовательский класс имеет тип Map() из-за того, как он был назван. но для обычных объектов, подобных вашему примеру. если бы я хотел получить значение YV и AM: Объект.записи(MapData.данные).карта(i=> { пусть [ключ,значение] = я консоль.журнал(значение. fillKey) }); даст вам значение